} else if (this.isGetter(method)) {
return this.readProperty(args, method);
} else if (this.isFactoryMethod(method)) {
Class returnType = method.getReturnType();
if (!returnType.isAssignableFrom(this.productClass)) {
throw new ReturnTypeMismatchException("Return type mismatch. Expected assignable from: " + this.productClass + ", found: " + returnType);
} else {
Object product = this.make();
// Fill properties:
for (Map.Entry<String, PropertyPair> entry : this.properties.entrySet()) {
String propertyName = entry.getKey();