private <T> ModelCreator buildModelCreatorForManagedType(ModelType<T> managedType, MethodRuleDefinition<?> ruleDefinition, ModelPath modelPath) {
ModelSchema<T> modelSchema = getModelSchema(managedType, ruleDefinition);
List<ModelReference<?>> bindings = ruleDefinition.getReferences();
List<ModelReference<?>> inputs = bindings.subList(1, bindings.size());
ModelRuleDescriptor descriptor = ruleDefinition.getDescriptor();
Transformer<T, Inputs> transformer = new ManagedModelRuleInvokerBackedTransformer<T>(modelSchema, ruleDefinition.getRuleInvoker(), inputs);
return ModelCreators.of(ModelReference.of(modelPath, managedType), transformer)
.descriptor(descriptor)
.inputs(inputs)