code: final JcrNodeType with( RepositoryNodeTypeManager nodeTypeManager ) {
          return new JcrNodeType(this.key, this.context, this.session, nodeTypeManager, this.name, this.declaredSupertypes,
                                 this.primaryItemName, this.childNodeDefinitions, this.propertyDefinitions, this.mixin,
                                 this.isAbstract, this.queryable, this.orderableChildNodes);
      }
docs: Returns a {@link JcrNodeType} that is equivalent to this {@link JcrNodeType}, except with a different repository node type
  manager. This method should only be called during the initialization of the repository node type manager, unless some kind
  of cross-repository type shipping is implemented.
  
  @param nodeTypeManager the new repository node type manager
  @return a new {@link JcrNodeType} that has the same state as this node type, but with the given node type manager.