public final class org.graalvm.options.OptionKey<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.graalvm.options.OptionKey
  super_class: java.lang.Object
{
  private final org.graalvm.options.OptionType<T> type;
    descriptor: Lorg/graalvm/options/OptionType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/graalvm/options/OptionType<TT;>;

  private final T defaultValue;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: TT;

  public void <init>();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.graalvm.options.OptionKey this
        start local 1 // java.lang.Object defaultValue
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 63
            aload 1 /* defaultValue */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 64
            aload 0 /* this */
            aload 1 /* defaultValue */
            putfield org.graalvm.options.OptionKey.defaultValue:Ljava/lang/Object;
         3: .line 65
            aload 0 /* this */
            aload 1 /* defaultValue */
            invokestatic org.graalvm.options.OptionType.defaultType:(Ljava/lang/Object;)Lorg/graalvm/options/OptionType;
            putfield org.graalvm.options.OptionKey.type:Lorg/graalvm/options/OptionType;
         4: .line 66
            aload 0 /* this */
            getfield org.graalvm.options.OptionKey.type:Lorg/graalvm/options/OptionType;
            ifnonnull 6
         5: .line 67
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No default type specified for type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* defaultValue */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ". Specify the option type explicitly to resolve this."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 69
      StackMap locals: org.graalvm.options.OptionKey java.lang.Object
      StackMap stack:
            return
        end local 1 // java.lang.Object defaultValue
        end local 0 // org.graalvm.options.OptionKey this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/graalvm/options/OptionKey<TT;>;
            0    7     1  defaultValue  TT;
    Signature: (TT;)V
    MethodParameters:
              Name  Flags
      defaultValue  

  public void <init>(T, org.graalvm.options.OptionType<T>);
    descriptor: (Ljava/lang/Object;Lorg/graalvm/options/OptionType;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.graalvm.options.OptionKey this
        start local 1 // java.lang.Object defaultValue
        start local 2 // org.graalvm.options.OptionType type
         0: .line 76
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 77
            aload 2 /* type */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 78
            aload 0 /* this */
            aload 1 /* defaultValue */
            putfield org.graalvm.options.OptionKey.defaultValue:Ljava/lang/Object;
         3: .line 79
            aload 0 /* this */
            aload 2 /* type */
            putfield org.graalvm.options.OptionKey.type:Lorg/graalvm/options/OptionType;
         4: .line 80
            return
        end local 2 // org.graalvm.options.OptionType type
        end local 1 // java.lang.Object defaultValue
        end local 0 // org.graalvm.options.OptionKey this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lorg/graalvm/options/OptionKey<TT;>;
            0    5     1  defaultValue  TT;
            0    5     2          type  Lorg/graalvm/options/OptionType<TT;>;
    Signature: (TT;Lorg/graalvm/options/OptionType<TT;>;)V
    MethodParameters:
              Name  Flags
      defaultValue  
      type          

  public static <V> org.graalvm.options.OptionKey<org.graalvm.options.OptionMap<V>> mapOf(java.lang.Class<V>);
    descriptor: (Ljava/lang/Class;)Lorg/graalvm/options/OptionKey;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.lang.Class valueClass
         0: .line 123
            aload 0 /* valueClass */
            invokestatic org.graalvm.options.OptionType.mapOf:(Ljava/lang/Class;)Lorg/graalvm/options/OptionType;
            astore 1 /* type */
        start local 1 // org.graalvm.options.OptionType type
         1: .line 124
            aload 1 /* type */
            ifnonnull 3
         2: .line 125
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No default type specified for type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* valueClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 127
      StackMap locals: org.graalvm.options.OptionType
      StackMap stack:
            new org.graalvm.options.OptionKey
            dup
            invokestatic org.graalvm.options.OptionMap.empty:()Lorg/graalvm/options/OptionMap;
            aload 1 /* type */
            invokespecial org.graalvm.options.OptionKey.<init>:(Ljava/lang/Object;Lorg/graalvm/options/OptionType;)V
            areturn
        end local 1 // org.graalvm.options.OptionType type
        end local 0 // java.lang.Class valueClass
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0  valueClass  Ljava/lang/Class<TV;>;
            1    4     1        type  Lorg/graalvm/options/OptionType<Lorg/graalvm/options/OptionMap<TV;>;>;
    Signature: <V:Ljava/lang/Object;>(Ljava/lang/Class<TV;>;)Lorg/graalvm/options/OptionKey<Lorg/graalvm/options/OptionMap<TV;>;>;
    MethodParameters:
            Name  Flags
      valueClass  

  public org.graalvm.options.OptionType<T> getType();
    descriptor: ()Lorg/graalvm/options/OptionType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.options.OptionKey this
         0: .line 136
            aload 0 /* this */
            getfield org.graalvm.options.OptionKey.type:Lorg/graalvm/options/OptionType;
            areturn
        end local 0 // org.graalvm.options.OptionKey this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/options/OptionKey<TT;>;
    Signature: ()Lorg/graalvm/options/OptionType<TT;>;

  public T getDefaultValue();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.options.OptionKey this
         0: .line 145
            aload 0 /* this */
            getfield org.graalvm.options.OptionKey.defaultValue:Ljava/lang/Object;
            areturn
        end local 0 // org.graalvm.options.OptionKey this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/options/OptionKey<TT;>;
    Signature: ()TT;

  public T getValue(org.graalvm.options.OptionValues);
    descriptor: (Lorg/graalvm/options/OptionValues;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.options.OptionKey this
        start local 1 // org.graalvm.options.OptionValues values
         0: .line 154
            aload 1 /* values */
            aload 0 /* this */
            invokeinterface org.graalvm.options.OptionValues.get:(Lorg/graalvm/options/OptionKey;)Ljava/lang/Object;
            areturn
        end local 1 // org.graalvm.options.OptionValues values
        end local 0 // org.graalvm.options.OptionKey this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/graalvm/options/OptionKey<TT;>;
            0    1     1  values  Lorg/graalvm/options/OptionValues;
    Signature: (Lorg/graalvm/options/OptionValues;)TT;
    MethodParameters:
        Name  Flags
      values  

  public boolean hasBeenSet(org.graalvm.options.OptionValues);
    descriptor: (Lorg/graalvm/options/OptionValues;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.options.OptionKey this
        start local 1 // org.graalvm.options.OptionValues values
         0: .line 164
            aload 1 /* values */
            aload 0 /* this */
            invokeinterface org.graalvm.options.OptionValues.hasBeenSet:(Lorg/graalvm/options/OptionKey;)Z
            ireturn
        end local 1 // org.graalvm.options.OptionValues values
        end local 0 // org.graalvm.options.OptionKey this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/graalvm/options/OptionKey<TT;>;
            0    1     1  values  Lorg/graalvm/options/OptionValues;
    MethodParameters:
        Name  Flags
      values  
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "OptionKey.java"