private Term buildPropertyAccessTerm(Type activeType, Tree termNode) { String propertyName = termNode.getText(); PropertyAdapter adapter = findPropertyAdapter(activeType, propertyName); // Prefer the accessor over the field if (adapter.getReadMethod() != null) { return buildGetterMethodAccessTerm(activeType, propertyName, adapter.getReadMethod()); } if (adapter.getField() != null) { return buildPublicFieldAccessTerm(activeType, propertyName, adapter.getField()); } throw new RuntimeException(String.format( "Property '%s' of class %s is not readable (it has no read accessor method).", adapter.getName(), adapter.getBeanType().getName())); }