test_class.declarator: THINGS = Index.create(Thing.class, thing -> thing.name)
test_class.modifier: private static final
test_class.original_string: private static final Index<String, Thing> THINGS = Index.create(Thing.class, thing -> thing.name);
test_class.type: Index<String, Thing>
test_class.var_name: THINGS
test_class.file: api/src/test/java/net/kyori/adventure/util/IndexTest.java
test_class.identifier: IndexTest
test_case.body: @Test
    void testValues() {
      assertThat(THINGS.values()).containsExactly(Thing.ABC, Thing.DEF);
    }
test_case.class_method_signature: IndexTest.testValues()
test_case.full_signature: @Test void testValues()
test_case.identifier: testValues
test_case.invocations: containsExactly assertThat values
test_case.modifiers: @Test
test_case.parameters: ()
test_case.return: void
test_case.signature: void testValues()
focal_class.declarator: keyToValue
focal_class.modifier: private final
focal_class.original_string: private final Map<K, V> keyToValue;
focal_class.type: Map<K, V>
focal_class.var_name: keyToValue
focal_class.declarator: valueToKey
focal_class.modifier: private final
focal_class.original_string: private final Map<V, K> valueToKey;
focal_class.type: Map<V, K>
focal_class.var_name: valueToKey
focal_class.file: api/src/main/java/net/kyori/adventure/util/Index.java
focal_class.identifier: Index
focal_class.class_method_signature: Index.Index(final Map<K, V> keyToValue, final Map<V, K> valueToKey)
focal_class.full_signature: private  Index(final Map<K, V> keyToValue, final Map<V, K> valueToKey)
focal_class.identifier: Index
focal_class.modifiers: private
focal_class.parameters: (final Map<K, V> keyToValue, final Map<V, K> valueToKey)
focal_class.signature:  Index(final Map<K, V> keyToValue, final Map<V, K> valueToKey)
focal_class.class_method_signature: Index.create(final Class<V> type, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.full_signature: public static Index<K, V> create(final Class<V> type, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.identifier: create
focal_class.modifiers: public static
focal_class.parameters: (final Class<V> type, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.return: Index<K, V>
focal_class.signature: Index<K, V> create(final Class<V> type, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.class_method_signature: Index.create(final Class<V> type, final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull V@NonNull... values)
focal_class.full_signature: @SafeVarargs public static Index<K, V> create(final Class<V> type, final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull V@NonNull... values)
focal_class.identifier: create
focal_class.modifiers: @SafeVarargs public static
focal_class.parameters: (final Class<V> type, final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull V@NonNull... values)
focal_class.return: Index<K, V>
focal_class.signature: Index<K, V> create(final Class<V> type, final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull V@NonNull... values)
focal_class.class_method_signature: Index.create(final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull V@NonNull... values)
focal_class.full_signature: @SafeVarargs @SuppressWarnings("RedundantTypeArguments") // explicit type parameters needed to fix build on JDK 1.8 public static Index<K, V> create(final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull V@NonNull... values)
focal_class.identifier: create
focal_class.modifiers: @SafeVarargs @SuppressWarnings("RedundantTypeArguments") // explicit type parameters needed to fix build on JDK 1.8 public static
focal_class.parameters: (final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull V@NonNull... values)
focal_class.return: Index<K, V>
focal_class.signature: Index<K, V> create(final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull V@NonNull... values)
focal_class.class_method_signature: Index.create(final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull List<V> constants)
focal_class.full_signature: @SuppressWarnings("RedundantTypeArguments") // explicit type parameters needed to fix build on JDK 1.8 public static Index<K, V> create(final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull List<V> constants)
focal_class.identifier: create
focal_class.modifiers: @SuppressWarnings("RedundantTypeArguments") // explicit type parameters needed to fix build on JDK 1.8 public static
focal_class.parameters: (final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull List<V> constants)
focal_class.return: Index<K, V>
focal_class.signature: Index<K, V> create(final @NonNull Function<? super V, ? extends K> keyFunction, final @NonNull List<V> constants)
focal_class.class_method_signature: Index.create(final V[] values, final IntFunction<Map<V, K>> valueToKeyFactory, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.full_signature: private static Index<K, V> create(final V[] values, final IntFunction<Map<V, K>> valueToKeyFactory, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.identifier: create
focal_class.modifiers: private static
focal_class.parameters: (final V[] values, final IntFunction<Map<V, K>> valueToKeyFactory, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.return: Index<K, V>
focal_class.signature: Index<K, V> create(final V[] values, final IntFunction<Map<V, K>> valueToKeyFactory, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.class_method_signature: Index.create(final List<V> values, final IntFunction<Map<V, K>> valueToKeyFactory, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.full_signature: private static Index<K, V> create(final List<V> values, final IntFunction<Map<V, K>> valueToKeyFactory, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.identifier: create
focal_class.modifiers: private static
focal_class.parameters: (final List<V> values, final IntFunction<Map<V, K>> valueToKeyFactory, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.return: Index<K, V>
focal_class.signature: Index<K, V> create(final List<V> values, final IntFunction<Map<V, K>> valueToKeyFactory, final @NonNull Function<? super V, ? extends K> keyFunction)
focal_class.class_method_signature: Index.keys()
focal_class.full_signature: public @NonNull Set<K> keys()
focal_class.identifier: keys
focal_class.modifiers: public @NonNull
focal_class.parameters: ()
focal_class.return: Set<K>
focal_class.signature: Set<K> keys()
focal_class.class_method_signature: Index.key(final @NonNull V value)
focal_class.full_signature: public @Nullable K key(final @NonNull V value)
focal_class.identifier: key
focal_class.modifiers: public @Nullable
focal_class.parameters: (final @NonNull V value)
focal_class.return: K
focal_class.signature: K key(final @NonNull V value)
focal_class.class_method_signature: Index.values()
focal_class.full_signature: public @NonNull Set<V> values()
focal_class.identifier: values
focal_class.modifiers: public @NonNull
focal_class.parameters: ()
focal_class.return: Set<V>
focal_class.signature: Set<V> values()
focal_class.class_method_signature: Index.value(final @NonNull K key)
focal_class.full_signature: public @Nullable V value(final @NonNull K key)
focal_class.identifier: value
focal_class.modifiers: public @Nullable
focal_class.parameters: (final @NonNull K key)
focal_class.return: V
focal_class.signature: V value(final @NonNull K key)
focal_method.body: public @NonNull Set<V> values() {
      return Collections.unmodifiableSet(this.valueToKey.keySet());
    }
focal_method.class_method_signature: Index.values()
focal_method.full_signature: public @NonNull Set<V> values()
focal_method.identifier: values
focal_method.invocations: unmodifiableSet keySet
focal_method.modifiers: public @NonNull
focal_method.parameters: ()
focal_method.return: Set<V>
focal_method.signature: Set<V> values()