test_class.declarator: K = TypeVariableName.get("K")
test_class.modifier: private static final
test_class.original_string: private static final TypeVariableName K = TypeVariableName.get("K");
test_class.type: TypeVariableName
test_class.var_name: K
test_class.declarator: V = TypeVariableName.get("V")
test_class.modifier: private static final
test_class.original_string: private static final TypeVariableName V = TypeVariableName.get("V");
test_class.type: TypeVariableName
test_class.var_name: V
test_class.declarator: LIST_OF_K =
        ParameterizedTypeName.get(ClassName.get(List.class), K)
test_class.modifier: private static final
test_class.original_string: private static final ParameterizedTypeName LIST_OF_K =
        ParameterizedTypeName.get(ClassName.get(List.class), K);
test_class.type: ParameterizedTypeName
test_class.var_name: LIST_OF_K
test_class.declarator: LIST_OF_V =
        ParameterizedTypeName.get(ClassName.get(List.class), V)
test_class.modifier: private static final
test_class.original_string: private static final ParameterizedTypeName LIST_OF_V =
        ParameterizedTypeName.get(ClassName.get(List.class), V);
test_class.type: ParameterizedTypeName
test_class.var_name: LIST_OF_V
test_class.declarator: MAP_K_V =
        ParameterizedTypeName.get(ClassName.get(Map.class), K, V)
test_class.modifier: private static final
test_class.original_string: private static final ParameterizedTypeName MAP_K_V =
        ParameterizedTypeName.get(ClassName.get(Map.class), K, V);
test_class.type: ParameterizedTypeName
test_class.var_name: MAP_K_V
test_class.declarator: MAP_V_LIST_OF_K =
        ParameterizedTypeName.get(ClassName.get(Map.class), V, LIST_OF_K)
test_class.modifier: private static final
test_class.original_string: private static final ParameterizedTypeName MAP_V_LIST_OF_K =
        ParameterizedTypeName.get(ClassName.get(Map.class), V, LIST_OF_K);
test_class.type: ParameterizedTypeName
test_class.var_name: MAP_V_LIST_OF_K
test_class.file: api/src/test/java/net/zerobuilder/compiler/generate/ZeroUtilTest.java
test_class.identifier: ZeroUtilTest
test_case.body: @Test
    public void testReferencesS_V() throws Exception {
      TypeVariableName s = TypeVariableName.get("S", String.class);
      TypeVariableName v = TypeVariableName.get("V", s);
      assertTrue(references(v, s));
    }
test_case.class_method_signature: ZeroUtilTest.testReferencesS_V()
test_case.full_signature: @Test public void testReferencesS_V()
test_case.identifier: testReferencesS_V
test_case.invocations: get get assertTrue references
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testReferencesS_V()
focal_class.declarator: reservedWords = new HashSet<>(Arrays.asList(
        "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class",
        "const", "continue", "default", "do", "double", "else", "enum", "extends", "final",
        "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int",
        "interface", "long", "native", "new", "package", "private", "protected", "public",
        "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this",
        "throw", "throws", "transient", "try", "void", "volatile", "while"))
focal_class.modifier: private static final
focal_class.original_string: private static final Set<String> reservedWords = new HashSet<>(Arrays.asList(
        "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class",
        "const", "continue", "default", "do", "double", "else", "enum", "extends", "final",
        "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int",
        "interface", "long", "native", "new", "package", "private", "protected", "public",
        "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this",
        "throw", "throws", "transient", "try", "void", "volatile", "while"));
focal_class.type: Set<String>
focal_class.var_name: reservedWords
focal_class.declarator: emptyCodeBlock = CodeBlock.of("")
focal_class.modifier: public static final
focal_class.original_string: public static final CodeBlock emptyCodeBlock = CodeBlock.of("");
focal_class.type: CodeBlock
focal_class.var_name: emptyCodeBlock
focal_class.declarator: joinCodeBlocks
        = joinCodeBlocks("")
focal_class.modifier: public static final
focal_class.original_string: public static final Collector<CodeBlock, List<CodeBlock>, CodeBlock> joinCodeBlocks
        = joinCodeBlocks("");
focal_class.type: Collector<CodeBlock, List<CodeBlock>, CodeBlock>
focal_class.var_name: joinCodeBlocks
focal_class.file: api/src/main/java/net/zerobuilder/compiler/generate/ZeroUtil.java
focal_class.identifier: ZeroUtil
focal_class.class_method_signature: ZeroUtil.upcase(String s)
focal_class.full_signature: public static String upcase(String s)
focal_class.identifier: upcase
focal_class.modifiers: public static
focal_class.parameters: (String s)
focal_class.return: String
focal_class.signature: String upcase(String s)
focal_class.class_method_signature: ZeroUtil.downcase(String s)
focal_class.full_signature: public static String downcase(String s)
focal_class.identifier: downcase
focal_class.modifiers: public static
focal_class.parameters: (String s)
focal_class.return: String
focal_class.signature: String downcase(String s)
focal_class.class_method_signature: ZeroUtil.statement(String format, Object... args)
focal_class.full_signature: public static CodeBlock statement(String format, Object... args)
focal_class.identifier: statement
focal_class.modifiers: public static
focal_class.parameters: (String format, Object... args)
focal_class.return: CodeBlock
focal_class.signature: CodeBlock statement(String format, Object... args)
focal_class.class_method_signature: ZeroUtil.parameterSpec(TypeName type, String name)
focal_class.full_signature: public static ParameterSpec parameterSpec(TypeName type, String name)
focal_class.identifier: parameterSpec
focal_class.modifiers: public static
focal_class.parameters: (TypeName type, String name)
focal_class.return: ParameterSpec
focal_class.signature: ParameterSpec parameterSpec(TypeName type, String name)
focal_class.class_method_signature: ZeroUtil.fieldSpec(TypeName type, String name, Modifier... modifiers)
focal_class.full_signature: public static FieldSpec fieldSpec(TypeName type, String name, Modifier... modifiers)
focal_class.identifier: fieldSpec
focal_class.modifiers: public static
focal_class.parameters: (TypeName type, String name, Modifier... modifiers)
focal_class.return: FieldSpec
focal_class.signature: FieldSpec fieldSpec(TypeName type, String name, Modifier... modifiers)
focal_class.class_method_signature: ZeroUtil.distinctFrom(String string, String other)
focal_class.full_signature: static String distinctFrom(String string, String other)
focal_class.identifier: distinctFrom
focal_class.modifiers: static
focal_class.parameters: (String string, String other)
focal_class.return: String
focal_class.signature: String distinctFrom(String string, String other)
focal_class.class_method_signature: ZeroUtil.rawClassName(TypeName typeName)
focal_class.full_signature: public static ClassName rawClassName(TypeName typeName)
focal_class.identifier: rawClassName
focal_class.modifiers: public static
focal_class.parameters: (TypeName typeName)
focal_class.return: ClassName
focal_class.signature: ClassName rawClassName(TypeName typeName)
focal_class.class_method_signature: ZeroUtil.typeArguments(TypeName typeName)
focal_class.full_signature: private static List<TypeName> typeArguments(TypeName typeName)
focal_class.identifier: typeArguments
focal_class.modifiers: private static
focal_class.parameters: (TypeName typeName)
focal_class.return: List<TypeName>
focal_class.signature: List<TypeName> typeArguments(TypeName typeName)
focal_class.class_method_signature: ZeroUtil.onlyTypeArgument(TypeName typeName)
focal_class.full_signature: static Optional<TypeName> onlyTypeArgument(TypeName typeName)
focal_class.identifier: onlyTypeArgument
focal_class.modifiers: static
focal_class.parameters: (TypeName typeName)
focal_class.return: Optional<TypeName>
focal_class.signature: Optional<TypeName> onlyTypeArgument(TypeName typeName)
focal_class.class_method_signature: ZeroUtil.transform(Collection<? extends X> input, Function<X, E> function)
focal_class.full_signature: public static List<E> transform(Collection<? extends X> input, Function<X, E> function)
focal_class.identifier: transform
focal_class.modifiers: public static
focal_class.parameters: (Collection<? extends X> input, Function<X, E> function)
focal_class.return: List<E>
focal_class.signature: List<E> transform(Collection<? extends X> input, Function<X, E> function)
focal_class.class_method_signature: ZeroUtil.cons(P first, List<? extends P> list)
focal_class.full_signature: public static List<P> cons(P first, List<? extends P> list)
focal_class.identifier: cons
focal_class.modifiers: public static
focal_class.parameters: (P first, List<? extends P> list)
focal_class.return: List<P>
focal_class.signature: List<P> cons(P first, List<? extends P> list)
focal_class.class_method_signature: ZeroUtil.concat(List<? extends P> left, List<? extends P> right)
focal_class.full_signature: public static List<P> concat(List<? extends P> left, List<? extends P> right)
focal_class.identifier: concat
focal_class.modifiers: public static
focal_class.parameters: (List<? extends P> left, List<? extends P> right)
focal_class.return: List<P>
focal_class.signature: List<P> concat(List<? extends P> left, List<? extends P> right)
focal_class.class_method_signature: ZeroUtil.joinCodeBlocks(String delimiter)
focal_class.full_signature: public static Collector<CodeBlock, List<CodeBlock>, CodeBlock> joinCodeBlocks(String delimiter)
focal_class.identifier: joinCodeBlocks
focal_class.modifiers: public static
focal_class.parameters: (String delimiter)
focal_class.return: Collector<CodeBlock, List<CodeBlock>, CodeBlock>
focal_class.signature: Collector<CodeBlock, List<CodeBlock>, CodeBlock> joinCodeBlocks(String delimiter)
focal_class.class_method_signature: ZeroUtil.flatList()
focal_class.full_signature: public static Collector<List<E>, List<E>, List<E>> flatList()
focal_class.identifier: flatList
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: Collector<List<E>, List<E>, List<E>>
focal_class.signature: Collector<List<E>, List<E>, List<E>> flatList()
focal_class.class_method_signature: ZeroUtil.listCollector(Function<List<E>, R> finisher)
focal_class.full_signature: static Collector<E, List<E>, R> listCollector(Function<List<E>, R> finisher)
focal_class.identifier: listCollector
focal_class.modifiers: static
focal_class.parameters: (Function<List<E>, R> finisher)
focal_class.return: Collector<E, List<E>, R>
focal_class.signature: Collector<E, List<E>, R> listCollector(Function<List<E>, R> finisher)
focal_class.class_method_signature: ZeroUtil.memoize(Supplier<R> supplier)
focal_class.full_signature: static Supplier<R> memoize(Supplier<R> supplier)
focal_class.identifier: memoize
focal_class.modifiers: static
focal_class.parameters: (Supplier<R> supplier)
focal_class.return: Supplier<R>
focal_class.signature: Supplier<R> memoize(Supplier<R> supplier)
focal_class.class_method_signature: ZeroUtil.constructor(Modifier... modifiers)
focal_class.full_signature: public static MethodSpec constructor(Modifier... modifiers)
focal_class.identifier: constructor
focal_class.modifiers: public static
focal_class.parameters: (Modifier... modifiers)
focal_class.return: MethodSpec
focal_class.signature: MethodSpec constructor(Modifier... modifiers)
focal_class.class_method_signature: ZeroUtil.simpleName(TypeName type)
focal_class.full_signature: public static String simpleName(TypeName type)
focal_class.identifier: simpleName
focal_class.modifiers: public static
focal_class.parameters: (TypeName type)
focal_class.return: String
focal_class.signature: String simpleName(TypeName type)
focal_class.class_method_signature: ZeroUtil.createRanking(E[] a, E[] b)
focal_class.full_signature: static int[] createRanking(E[] a, E[] b)
focal_class.identifier: createRanking
focal_class.modifiers: static
focal_class.parameters: (E[] a, E[] b)
focal_class.return: int[]
focal_class.signature: int[] createRanking(E[] a, E[] b)
focal_class.class_method_signature: ZeroUtil.indexOf(E[] b, E el)
focal_class.full_signature: private static int indexOf(E[] b, E el)
focal_class.identifier: indexOf
focal_class.modifiers: private static
focal_class.parameters: (E[] b, E el)
focal_class.return: int
focal_class.signature: int indexOf(E[] b, E el)
focal_class.class_method_signature: ZeroUtil.applyRanking(int[] ranking, List<E> input)
focal_class.full_signature: static List<E> applyRanking(int[] ranking, List<E> input)
focal_class.identifier: applyRanking
focal_class.modifiers: static
focal_class.parameters: (int[] ranking, List<E> input)
focal_class.return: List<E>
focal_class.signature: List<E> applyRanking(int[] ranking, List<E> input)
focal_class.class_method_signature: ZeroUtil.parameterizedTypeName(ClassName raw, List<TypeVariableName> typeVars)
focal_class.full_signature: public static TypeName parameterizedTypeName(ClassName raw, List<TypeVariableName> typeVars)
focal_class.identifier: parameterizedTypeName
focal_class.modifiers: public static
focal_class.parameters: (ClassName raw, List<TypeVariableName> typeVars)
focal_class.return: TypeName
focal_class.signature: TypeName parameterizedTypeName(ClassName raw, List<TypeVariableName> typeVars)
focal_class.class_method_signature: ZeroUtil.addModifier(Modifier modifier, Modifier[] modifiers)
focal_class.full_signature: private static Modifier[] addModifier(Modifier modifier, Modifier[] modifiers)
focal_class.identifier: addModifier
focal_class.modifiers: private static
focal_class.parameters: (Modifier modifier, Modifier[] modifiers)
focal_class.return: Modifier[]
focal_class.signature: Modifier[] addModifier(Modifier modifier, Modifier[] modifiers)
focal_class.class_method_signature: ZeroUtil.modifiers(Access access, Modifier modifiers)
focal_class.full_signature: public static Modifier[] modifiers(Access access, Modifier modifiers)
focal_class.identifier: modifiers
focal_class.modifiers: public static
focal_class.parameters: (Access access, Modifier modifiers)
focal_class.return: Modifier[]
focal_class.signature: Modifier[] modifiers(Access access, Modifier modifiers)
focal_class.class_method_signature: ZeroUtil.modifiers(Access access)
focal_class.full_signature: public static Modifier[] modifiers(Access access)
focal_class.identifier: modifiers
focal_class.modifiers: public static
focal_class.parameters: (Access access)
focal_class.return: Modifier[]
focal_class.signature: Modifier[] modifiers(Access access)
focal_class.class_method_signature: ZeroUtil.maybeTypevars(TypeName type)
focal_class.full_signature: private static boolean maybeTypevars(TypeName type)
focal_class.identifier: maybeTypevars
focal_class.modifiers: private static
focal_class.parameters: (TypeName type)
focal_class.return: boolean
focal_class.signature: boolean maybeTypevars(TypeName type)
focal_class.class_method_signature: ZeroUtil.references(TypeName type, TypeVariableName test)
focal_class.full_signature: public static boolean references(TypeName type, TypeVariableName test)
focal_class.identifier: references
focal_class.modifiers: public static
focal_class.parameters: (TypeName type, TypeVariableName test)
focal_class.return: boolean
focal_class.signature: boolean references(TypeName type, TypeVariableName test)
focal_class.class_method_signature: ZeroUtil.extractTypeVars(TypeName type)
focal_class.full_signature: public static List<TypeVariableName> extractTypeVars(TypeName type)
focal_class.identifier: extractTypeVars
focal_class.modifiers: public static
focal_class.parameters: (TypeName type)
focal_class.return: List<TypeVariableName>
focal_class.signature: List<TypeVariableName> extractTypeVars(TypeName type)
focal_class.class_method_signature: ZeroUtil.reverse(List<E> in)
focal_class.full_signature: public static List<E> reverse(List<E> in)
focal_class.identifier: reverse
focal_class.modifiers: public static
focal_class.parameters: (List<E> in)
focal_class.return: List<E>
focal_class.signature: List<E> reverse(List<E> in)
focal_class.class_method_signature: ZeroUtil.ZeroUtil()
focal_class.full_signature: private  ZeroUtil()
focal_class.identifier: ZeroUtil
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  ZeroUtil()
focal_method.body: public static boolean references(TypeName type, TypeVariableName test) {
      if (!maybeTypevars(type)) {
        return false;
      }
      if (type instanceof TypeVariableName
          && ((TypeVariableName) type).bounds.isEmpty()) {
        return type.equals(test);
      }
      TypeWalk walk = new TypeWalk(type);
      while (walk.hasNext()) {
        if (walk.next().equals(test)) {
          return true;
        }
      }
      return false;
    }
focal_method.class_method_signature: ZeroUtil.references(TypeName type, TypeVariableName test)
focal_method.full_signature: public static boolean references(TypeName type, TypeVariableName test)
focal_method.identifier: references
focal_method.invocations: maybeTypevars isEmpty equals hasNext equals next
focal_method.modifiers: public static
focal_method.parameters: (TypeName type, TypeVariableName test)
focal_method.return: boolean
focal_method.signature: boolean references(TypeName type, TypeVariableName test)