package graphql.schema;


import graphql.PublicApi;
import graphql.util.TraversalControl;
import graphql.util.TraverserContext;

import java.util.Collections;
import java.util.List;

/**
 * All types in graphql have a name
 */
@PublicApi
public interface GraphQLType {
    /**
     * @return the name of the type which MUST fit within the regular expression {@code [_A-Za-z][_0-9A-Za-z]*}
     */
    String getName();

    /**
     * @return returns all types directly associated with this node
     */
    default List<GraphQLType> getChildren() { return Collections.emptyList(); }

    TraversalControl accept(TraverserContext<GraphQLType> context, TypeVisitor visitor);
}

@@ -578,16 +578,628 @@
 t(); %7D%0A%0A
+    /**%0A     * Double-dispatch entry point.%0A     *%0A     * It allows to travers a given non-trivial graphQL type and move from root to nested or enclosed types.%0A     *%0A     * This implements similar pattern as %7B@link graphql.language.Node%7D, see accept(...) for more details about the pattern.%0A     *%0A     * @param context TraverserContext bound to this graphQL type object%0A     * @param visitor Visitor instance that performs actual processing on the types(s)%0A     *%0A     * @return Result of Visitor's operation.%0A     * Note! Visitor's operation might return special results to control traversal process.%0A     */%0A
     Trav

Add javadoc