@Override
    public void execute(MutableModelNode modelNode, List<ModelView<?>> inputs) {

      NodeInitializerRegistry nodeInitializerRegistry =
          ModelViews.assertType(inputs.get(0), NodeInitializerRegistry.class).getInstance();

      ManagedChildNodeCreatorStrategy<E> childStrategy =
          new ManagedChildNodeCreatorStrategy<E>(nodeInitializerRegistry);
      modelNode.setPrivateData(ChildNodeInitializerStrategy.class, childStrategy);
    }
 private void addPropertyLinks(
     MutableModelNode modelNode,
     ModelSchemaStore schemaStore,
     NodeInitializerRegistry nodeInitializerRegistry) {
   for (ManagedProperty<?> property : bindings.getManagedProperties().values()) {
     addPropertyLink(modelNode, property, schemaStore, nodeInitializerRegistry);
   }
   if (isNamedType()) {
     // Only initialize "name" child node if the schema has such a managed property.
     // This is not the case for a managed subtype of an unmanaged type that implements Named.
     if (bindings.getManagedProperties().containsKey("name")) {
       MutableModelNode nameLink = modelNode.getLink("name");
       if (nameLink == null) {
         throw new IllegalStateException("expected name node for " + modelNode.getPath());
       }
       nameLink.setPrivateData(ModelType.of(String.class), modelNode.getPath().getName());
     }
   }
 }