public class com.google.inject.Key<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.google.inject.Key
  super_class: java.lang.Object
{
  private final com.google.inject.Key$AnnotationStrategy annotationStrategy;
    descriptor: Lcom/google/inject/Key$AnnotationStrategy;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.google.inject.TypeLiteral<T> typeLiteral;
    descriptor: Lcom/google/inject/TypeLiteral;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/google/inject/TypeLiteral<TT;>;

  private final int hashCode;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.lang.String toString;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  protected void <init>(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.inject.Key this
        start local 1 // java.lang.Class annotationType
         0: .line 72
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 73
            aload 0 /* this */
            aload 1 /* annotationType */
            invokestatic com.google.inject.Key.strategyFor:(Ljava/lang/Class;)Lcom/google/inject/Key$AnnotationStrategy;
            putfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
         2: .line 74
            aload 0 /* this */
         3: .line 76
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic com.google.inject.TypeLiteral.fromSuperclassTypeParameter:(Ljava/lang/Class;)Lcom/google/inject/TypeLiteral;
         4: .line 75
            invokestatic com.google.inject.internal.MoreTypes.canonicalizeForKey:(Lcom/google/inject/TypeLiteral;)Lcom/google/inject/TypeLiteral;
         5: .line 74
            putfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
         6: .line 77
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.google.inject.Key.computeHashCode:()I
            putfield com.google.inject.Key.hashCode:I
         7: .line 78
            return
        end local 1 // java.lang.Class annotationType
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/google/inject/Key<TT;>;
            0    8     1  annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)V
    MethodParameters:
                Name  Flags
      annotationType  

  protected void <init>(java.lang.annotation.Annotation);
    descriptor: (Ljava/lang/annotation/Annotation;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.inject.Key this
        start local 1 // java.lang.annotation.Annotation annotation
         0: .line 91
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 93
            aload 0 /* this */
            aload 1 /* annotation */
            invokestatic com.google.inject.Key.strategyFor:(Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key$AnnotationStrategy;
            putfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
         2: .line 94
            aload 0 /* this */
         3: .line 96
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic com.google.inject.TypeLiteral.fromSuperclassTypeParameter:(Ljava/lang/Class;)Lcom/google/inject/TypeLiteral;
         4: .line 95
            invokestatic com.google.inject.internal.MoreTypes.canonicalizeForKey:(Lcom/google/inject/TypeLiteral;)Lcom/google/inject/TypeLiteral;
         5: .line 94
            putfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
         6: .line 97
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.google.inject.Key.computeHashCode:()I
            putfield com.google.inject.Key.hashCode:I
         7: .line 98
            return
        end local 1 // java.lang.annotation.Annotation annotation
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lcom/google/inject/Key<TT;>;
            0    8     1  annotation  Ljava/lang/annotation/Annotation;
    MethodParameters:
            Name  Flags
      annotation  

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 111
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 112
            aload 0 /* this */
            getstatic com.google.inject.Key$NullAnnotationStrategy.INSTANCE:Lcom/google/inject/Key$NullAnnotationStrategy;
            putfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
         2: .line 113
            aload 0 /* this */
         3: .line 115
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic com.google.inject.TypeLiteral.fromSuperclassTypeParameter:(Ljava/lang/Class;)Lcom/google/inject/TypeLiteral;
         4: .line 114
            invokestatic com.google.inject.internal.MoreTypes.canonicalizeForKey:(Lcom/google/inject/TypeLiteral;)Lcom/google/inject/TypeLiteral;
         5: .line 113
            putfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
         6: .line 116
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.google.inject.Key.computeHashCode:()I
            putfield com.google.inject.Key.hashCode:I
         7: .line 117
            return
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/google/inject/Key<TT;>;

  private void <init>(java.lang.reflect.Type, com.google.inject.Key$AnnotationStrategy);
    descriptor: (Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.google.inject.Key this
        start local 1 // java.lang.reflect.Type type
        start local 2 // com.google.inject.Key$AnnotationStrategy annotationStrategy
         0: .line 121
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 122
            aload 0 /* this */
            aload 2 /* annotationStrategy */
            putfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
         2: .line 123
            aload 0 /* this */
            aload 1 /* type */
            invokestatic com.google.inject.TypeLiteral.get:(Ljava/lang/reflect/Type;)Lcom/google/inject/TypeLiteral;
            invokestatic com.google.inject.internal.MoreTypes.canonicalizeForKey:(Lcom/google/inject/TypeLiteral;)Lcom/google/inject/TypeLiteral;
            putfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
         3: .line 124
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.google.inject.Key.computeHashCode:()I
            putfield com.google.inject.Key.hashCode:I
         4: .line 125
            return
        end local 2 // com.google.inject.Key$AnnotationStrategy annotationStrategy
        end local 1 // java.lang.reflect.Type type
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lcom/google/inject/Key<TT;>;
            0    5     1                type  Ljava/lang/reflect/Type;
            0    5     2  annotationStrategy  Lcom/google/inject/Key$AnnotationStrategy;
    MethodParameters:
                    Name  Flags
      type                
      annotationStrategy  

  private void <init>(com.google.inject.TypeLiteral<T>, com.google.inject.Key$AnnotationStrategy);
    descriptor: (Lcom/google/inject/TypeLiteral;Lcom/google/inject/Key$AnnotationStrategy;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.google.inject.Key this
        start local 1 // com.google.inject.TypeLiteral typeLiteral
        start local 2 // com.google.inject.Key$AnnotationStrategy annotationStrategy
         0: .line 128
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 129
            aload 0 /* this */
            aload 2 /* annotationStrategy */
            putfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
         2: .line 130
            aload 0 /* this */
            aload 1 /* typeLiteral */
            invokestatic com.google.inject.internal.MoreTypes.canonicalizeForKey:(Lcom/google/inject/TypeLiteral;)Lcom/google/inject/TypeLiteral;
            putfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
         3: .line 131
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.google.inject.Key.computeHashCode:()I
            putfield com.google.inject.Key.hashCode:I
         4: .line 132
            return
        end local 2 // com.google.inject.Key$AnnotationStrategy annotationStrategy
        end local 1 // com.google.inject.TypeLiteral typeLiteral
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lcom/google/inject/Key<TT;>;
            0    5     1         typeLiteral  Lcom/google/inject/TypeLiteral<TT;>;
            0    5     2  annotationStrategy  Lcom/google/inject/Key$AnnotationStrategy;
    Signature: (Lcom/google/inject/TypeLiteral<TT;>;Lcom/google/inject/Key$AnnotationStrategy;)V
    MethodParameters:
                    Name  Flags
      typeLiteral         
      annotationStrategy  

  private int computeHashCode();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 136
            aload 0 /* this */
            getfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
            invokevirtual com.google.inject.TypeLiteral.hashCode:()I
            bipush 31
            imul
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokevirtual java.lang.Object.hashCode:()I
            iadd
            ireturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;

  public final com.google.inject.TypeLiteral<T> getTypeLiteral();
    descriptor: ()Lcom/google/inject/TypeLiteral;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 141
            aload 0 /* this */
            getfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
            areturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;
    Signature: ()Lcom/google/inject/TypeLiteral<TT;>;

  public final java.lang.Class<? extends java.lang.annotation.Annotation> getAnnotationType();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 146
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokeinterface com.google.inject.Key$AnnotationStrategy.getAnnotationType:()Ljava/lang/Class;
            areturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;
    Signature: ()Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;

  public final java.lang.annotation.Annotation getAnnotation();
    descriptor: ()Ljava/lang/annotation/Annotation;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 151
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokeinterface com.google.inject.Key$AnnotationStrategy.getAnnotation:()Ljava/lang/annotation/Annotation;
            areturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;

  boolean hasAnnotationType();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 155
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokeinterface com.google.inject.Key$AnnotationStrategy.getAnnotationType:()Ljava/lang/Class;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/inject/Key<TT;>;

  java.lang.String getAnnotationName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 159
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokeinterface com.google.inject.Key$AnnotationStrategy.getAnnotation:()Ljava/lang/annotation/Annotation;
            astore 1 /* annotation */
        start local 1 // java.lang.annotation.Annotation annotation
         1: .line 160
            aload 1 /* annotation */
            ifnull 3
         2: .line 161
            aload 1 /* annotation */
            invokeinterface java.lang.annotation.Annotation.toString:()Ljava/lang/String;
            areturn
         3: .line 165
      StackMap locals: java.lang.annotation.Annotation
      StackMap stack:
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokeinterface com.google.inject.Key$AnnotationStrategy.getAnnotationType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.annotation.Annotation annotation
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/google/inject/Key<TT;>;
            1    4     1  annotation  Ljava/lang/annotation/Annotation;

  java.lang.Class<? super T> getRawType();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 169
            aload 0 /* this */
            getfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
            invokevirtual com.google.inject.TypeLiteral.getRawType:()Ljava/lang/Class;
            areturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;
    Signature: ()Ljava/lang/Class<-TT;>;

  com.google.inject.Key<com.google.inject.Provider<T>> providerKey();
    descriptor: ()Lcom/google/inject/Key;
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 174
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
            invokevirtual com.google.inject.TypeLiteral.providerType:()Lcom/google/inject/TypeLiteral;
            invokevirtual com.google.inject.Key.ofType:(Lcom/google/inject/TypeLiteral;)Lcom/google/inject/Key;
            areturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;
    Signature: ()Lcom/google/inject/Key<Lcom/google/inject/Provider<TT;>;>;

  public final boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.google.inject.Key this
        start local 1 // java.lang.Object o
         0: .line 179
            aload 1 /* o */
            aload 0 /* this */
            if_acmpne 2
         1: .line 180
            iconst_1
            ireturn
         2: .line 182
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            instanceof com.google.inject.Key
            ifne 4
         3: .line 183
            iconst_0
            ireturn
         4: .line 185
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            checkcast com.google.inject.Key
            astore 2 /* other */
        start local 2 // com.google.inject.Key other
         5: .line 186
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            aload 2 /* other */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 8
         6: .line 187
            aload 0 /* this */
            getfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
            aload 2 /* other */
            getfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
            invokevirtual com.google.inject.TypeLiteral.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 186
            iconst_1
            ireturn
      StackMap locals: com.google.inject.Key
      StackMap stack:
         8: iconst_0
            ireturn
        end local 2 // com.google.inject.Key other
        end local 1 // java.lang.Object o
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Lcom/google/inject/Key<TT;>;
            0    9     1      o  Ljava/lang/Object;
            5    9     2  other  Lcom/google/inject/Key<*>;
    MethodParameters:
      Name  Flags
      o     

  public final int hashCode();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 192
            aload 0 /* this */
            getfield com.google.inject.Key.hashCode:I
            ireturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;

  public final java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 199
            aload 0 /* this */
            getfield com.google.inject.Key.toString:Ljava/lang/String;
            astore 1 /* local */
        start local 1 // java.lang.String local
         1: .line 200
            aload 1 /* local */
            ifnonnull 4
         2: .line 201
            new java.lang.StringBuilder
            dup
            ldc "Key[type="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", annotation="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* local */
         3: .line 202
            aload 0 /* this */
            aload 1 /* local */
            putfield com.google.inject.Key.toString:Ljava/lang/String;
         4: .line 204
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* local */
            areturn
        end local 1 // java.lang.String local
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/google/inject/Key<TT;>;
            1    5     1  local  Ljava/lang/String;

  static <T> com.google.inject.Key<T> get(java.lang.Class<T>, com.google.inject.Key$AnnotationStrategy);
    descriptor: (Ljava/lang/Class;Lcom/google/inject/Key$AnnotationStrategy;)Lcom/google/inject/Key;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // com.google.inject.Key$AnnotationStrategy annotationStrategy
         0: .line 209
            new com.google.inject.Key
            dup
            aload 0 /* type */
            aload 1 /* annotationStrategy */
            invokespecial com.google.inject.Key.<init>:(Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // com.google.inject.Key$AnnotationStrategy annotationStrategy
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                type  Ljava/lang/Class<TT;>;
            0    1     1  annotationStrategy  Lcom/google/inject/Key$AnnotationStrategy;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Lcom/google/inject/Key$AnnotationStrategy;)Lcom/google/inject/Key<TT;>;
    MethodParameters:
                    Name  Flags
      type                
      annotationStrategy  

  public static <T> com.google.inject.Key<T> get(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Lcom/google/inject/Key;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.lang.Class type
         0: .line 214
            new com.google.inject.Key
            dup
            aload 0 /* type */
            getstatic com.google.inject.Key$NullAnnotationStrategy.INSTANCE:Lcom/google/inject/Key$NullAnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Lcom/google/inject/Key<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public static <T> com.google.inject.Key<T> get(java.lang.Class<T>, java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Lcom/google/inject/Key;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // java.lang.Class annotationType
         0: .line 219
            new com.google.inject.Key
            dup
            aload 0 /* type */
            aload 1 /* annotationType */
            invokestatic com.google.inject.Key.strategyFor:(Ljava/lang/Class;)Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // java.lang.Class annotationType
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            type  Ljava/lang/Class<TT;>;
            0    1     1  annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Lcom/google/inject/Key<TT;>;
    MethodParameters:
                Name  Flags
      type            
      annotationType  

  public static <T> com.google.inject.Key<T> get(java.lang.Class<T>, java.lang.annotation.Annotation);
    descriptor: (Ljava/lang/Class;Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // java.lang.annotation.Annotation annotation
         0: .line 224
            new com.google.inject.Key
            dup
            aload 0 /* type */
            aload 1 /* annotation */
            invokestatic com.google.inject.Key.strategyFor:(Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // java.lang.annotation.Annotation annotation
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        type  Ljava/lang/Class<TT;>;
            0    1     1  annotation  Ljava/lang/annotation/Annotation;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key<TT;>;
    MethodParameters:
            Name  Flags
      type        
      annotation  

  public static com.google.inject.Key<?> get(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/google/inject/Key;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.lang.reflect.Type type
         0: .line 229
            new com.google.inject.Key
            dup
            aload 0 /* type */
            getstatic com.google.inject.Key$NullAnnotationStrategy.INSTANCE:Lcom/google/inject/Key$NullAnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 0 // java.lang.reflect.Type type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/reflect/Type;
    Signature: (Ljava/lang/reflect/Type;)Lcom/google/inject/Key<*>;
    MethodParameters:
      Name  Flags
      type  

  public static com.google.inject.Key<?> get(java.lang.reflect.Type, java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/reflect/Type;Ljava/lang/Class;)Lcom/google/inject/Key;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.reflect.Type type
        start local 1 // java.lang.Class annotationType
         0: .line 234
            new com.google.inject.Key
            dup
            aload 0 /* type */
            aload 1 /* annotationType */
            invokestatic com.google.inject.Key.strategyFor:(Ljava/lang/Class;)Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // java.lang.Class annotationType
        end local 0 // java.lang.reflect.Type type
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            type  Ljava/lang/reflect/Type;
            0    1     1  annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    Signature: (Ljava/lang/reflect/Type;Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Lcom/google/inject/Key<*>;
    MethodParameters:
                Name  Flags
      type            
      annotationType  

  public static com.google.inject.Key<?> get(java.lang.reflect.Type, java.lang.annotation.Annotation);
    descriptor: (Ljava/lang/reflect/Type;Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.reflect.Type type
        start local 1 // java.lang.annotation.Annotation annotation
         0: .line 239
            new com.google.inject.Key
            dup
            aload 0 /* type */
            aload 1 /* annotation */
            invokestatic com.google.inject.Key.strategyFor:(Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // java.lang.annotation.Annotation annotation
        end local 0 // java.lang.reflect.Type type
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        type  Ljava/lang/reflect/Type;
            0    1     1  annotation  Ljava/lang/annotation/Annotation;
    Signature: (Ljava/lang/reflect/Type;Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key<*>;
    MethodParameters:
            Name  Flags
      type        
      annotation  

  public static <T> com.google.inject.Key<T> get(com.google.inject.TypeLiteral<T>);
    descriptor: (Lcom/google/inject/TypeLiteral;)Lcom/google/inject/Key;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.google.inject.TypeLiteral typeLiteral
         0: .line 244
            new com.google.inject.Key
            dup
            aload 0 /* typeLiteral */
            getstatic com.google.inject.Key$NullAnnotationStrategy.INSTANCE:Lcom/google/inject/Key$NullAnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Lcom/google/inject/TypeLiteral;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 0 // com.google.inject.TypeLiteral typeLiteral
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  typeLiteral  Lcom/google/inject/TypeLiteral<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/google/inject/TypeLiteral<TT;>;)Lcom/google/inject/Key<TT;>;
    MethodParameters:
             Name  Flags
      typeLiteral  

  public static <T> com.google.inject.Key<T> get(com.google.inject.TypeLiteral<T>, java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Lcom/google/inject/TypeLiteral;Ljava/lang/Class;)Lcom/google/inject/Key;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.inject.TypeLiteral typeLiteral
        start local 1 // java.lang.Class annotationType
         0: .line 250
            new com.google.inject.Key
            dup
            aload 0 /* typeLiteral */
            aload 1 /* annotationType */
            invokestatic com.google.inject.Key.strategyFor:(Ljava/lang/Class;)Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Lcom/google/inject/TypeLiteral;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // java.lang.Class annotationType
        end local 0 // com.google.inject.TypeLiteral typeLiteral
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0     typeLiteral  Lcom/google/inject/TypeLiteral<TT;>;
            0    1     1  annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/google/inject/TypeLiteral<TT;>;Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Lcom/google/inject/Key<TT;>;
    MethodParameters:
                Name  Flags
      typeLiteral     
      annotationType  

  public static <T> com.google.inject.Key<T> get(com.google.inject.TypeLiteral<T>, java.lang.annotation.Annotation);
    descriptor: (Lcom/google/inject/TypeLiteral;Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.inject.TypeLiteral typeLiteral
        start local 1 // java.lang.annotation.Annotation annotation
         0: .line 255
            new com.google.inject.Key
            dup
            aload 0 /* typeLiteral */
            aload 1 /* annotation */
            invokestatic com.google.inject.Key.strategyFor:(Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Lcom/google/inject/TypeLiteral;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // java.lang.annotation.Annotation annotation
        end local 0 // com.google.inject.TypeLiteral typeLiteral
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  typeLiteral  Lcom/google/inject/TypeLiteral<TT;>;
            0    1     1   annotation  Ljava/lang/annotation/Annotation;
    Signature: <T:Ljava/lang/Object;>(Lcom/google/inject/TypeLiteral<TT;>;Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key<TT;>;
    MethodParameters:
             Name  Flags
      typeLiteral  
      annotation   

  public <T> com.google.inject.Key<T> ofType(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Lcom/google/inject/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.inject.Key this
        start local 1 // java.lang.Class type
         0: .line 264
            new com.google.inject.Key
            dup
            aload 1 /* type */
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // java.lang.Class type
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;
            0    1     1  type  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Lcom/google/inject/Key<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public com.google.inject.Key<?> ofType(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/google/inject/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.inject.Key this
        start local 1 // java.lang.reflect.Type type
         0: .line 273
            new com.google.inject.Key
            dup
            aload 1 /* type */
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Ljava/lang/reflect/Type;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // java.lang.reflect.Type type
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;
            0    1     1  type  Ljava/lang/reflect/Type;
    Signature: (Ljava/lang/reflect/Type;)Lcom/google/inject/Key<*>;
    MethodParameters:
      Name  Flags
      type  

  public <T> com.google.inject.Key<T> ofType(com.google.inject.TypeLiteral<T>);
    descriptor: (Lcom/google/inject/TypeLiteral;)Lcom/google/inject/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.inject.Key this
        start local 1 // com.google.inject.TypeLiteral type
         0: .line 282
            new com.google.inject.Key
            dup
            aload 1 /* type */
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Lcom/google/inject/TypeLiteral;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 1 // com.google.inject.TypeLiteral type
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;
            0    1     1  type  Lcom/google/inject/TypeLiteral<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/google/inject/TypeLiteral<TT;>;)Lcom/google/inject/Key<TT;>;
    MethodParameters:
      Name  Flags
      type  

  public boolean hasAttributes();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 291
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokeinterface com.google.inject.Key$AnnotationStrategy.hasAttributes:()Z
            ireturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;

  public com.google.inject.Key<T> withoutAttributes();
    descriptor: ()Lcom/google/inject/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.google.inject.Key this
         0: .line 300
            new com.google.inject.Key
            dup
            aload 0 /* this */
            getfield com.google.inject.Key.typeLiteral:Lcom/google/inject/TypeLiteral;
            aload 0 /* this */
            getfield com.google.inject.Key.annotationStrategy:Lcom/google/inject/Key$AnnotationStrategy;
            invokeinterface com.google.inject.Key$AnnotationStrategy.withoutAttributes:()Lcom/google/inject/Key$AnnotationStrategy;
            invokespecial com.google.inject.Key.<init>:(Lcom/google/inject/TypeLiteral;Lcom/google/inject/Key$AnnotationStrategy;)V
            areturn
        end local 0 // com.google.inject.Key this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Key<TT;>;
    Signature: ()Lcom/google/inject/Key<TT;>;

  static com.google.inject.Key$AnnotationStrategy strategyFor(java.lang.annotation.Annotation);
    descriptor: (Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key$AnnotationStrategy;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.lang.annotation.Annotation annotation
         0: .line 315
            aload 0 /* annotation */
            ldc "annotation"
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 316
            aload 0 /* annotation */
            invokeinterface java.lang.annotation.Annotation.annotationType:()Ljava/lang/Class;
            astore 1 /* annotationType */
        start local 1 // java.lang.Class annotationType
         2: .line 317
            aload 1 /* annotationType */
            invokestatic com.google.inject.Key.ensureRetainedAtRuntime:(Ljava/lang/Class;)V
         3: .line 318
            aload 1 /* annotationType */
            invokestatic com.google.inject.Key.ensureIsBindingAnnotation:(Ljava/lang/Class;)V
         4: .line 320
            aload 1 /* annotationType */
            invokestatic com.google.inject.internal.Annotations.isMarker:(Ljava/lang/Class;)Z
            ifeq 6
         5: .line 321
            new com.google.inject.Key$AnnotationTypeStrategy
            dup
            aload 1 /* annotationType */
            aload 0 /* annotation */
            invokespecial com.google.inject.Key$AnnotationTypeStrategy.<init>:(Ljava/lang/Class;Ljava/lang/annotation/Annotation;)V
            areturn
         6: .line 324
      StackMap locals: java.lang.Class
      StackMap stack:
            new com.google.inject.Key$AnnotationInstanceStrategy
            dup
            aload 0 /* annotation */
            invokestatic com.google.inject.internal.Annotations.canonicalizeIfNamed:(Ljava/lang/annotation/Annotation;)Ljava/lang/annotation/Annotation;
            invokespecial com.google.inject.Key$AnnotationInstanceStrategy.<init>:(Ljava/lang/annotation/Annotation;)V
            areturn
        end local 1 // java.lang.Class annotationType
        end local 0 // java.lang.annotation.Annotation annotation
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0      annotation  Ljava/lang/annotation/Annotation;
            2    7     1  annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    MethodParameters:
            Name  Flags
      annotation  

  static com.google.inject.Key$AnnotationStrategy strategyFor(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)Lcom/google/inject/Key$AnnotationStrategy;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.lang.Class annotationType
         0: .line 329
            aload 0 /* annotationType */
            invokestatic com.google.inject.internal.Annotations.canonicalizeIfNamed:(Ljava/lang/Class;)Ljava/lang/Class;
            astore 0 /* annotationType */
         1: .line 330
            aload 0 /* annotationType */
            invokestatic com.google.inject.internal.Annotations.isAllDefaultMethods:(Ljava/lang/Class;)Z
            ifeq 3
         2: .line 331
            aload 0 /* annotationType */
            invokestatic com.google.inject.internal.Annotations.generateAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            invokestatic com.google.inject.Key.strategyFor:(Ljava/lang/annotation/Annotation;)Lcom/google/inject/Key$AnnotationStrategy;
            areturn
         3: .line 334
      StackMap locals:
      StackMap stack:
            aload 0 /* annotationType */
            ldc "annotation type"
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 335
            aload 0 /* annotationType */
            invokestatic com.google.inject.Key.ensureRetainedAtRuntime:(Ljava/lang/Class;)V
         5: .line 336
            aload 0 /* annotationType */
            invokestatic com.google.inject.Key.ensureIsBindingAnnotation:(Ljava/lang/Class;)V
         6: .line 337
            new com.google.inject.Key$AnnotationTypeStrategy
            dup
            aload 0 /* annotationType */
            aconst_null
            invokespecial com.google.inject.Key$AnnotationTypeStrategy.<init>:(Ljava/lang/Class;Ljava/lang/annotation/Annotation;)V
            areturn
        end local 0 // java.lang.Class annotationType
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0  annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Lcom/google/inject/Key$AnnotationStrategy;
    MethodParameters:
                Name  Flags
      annotationType  

  private static void ensureRetainedAtRuntime(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Class annotationType
         0: .line 342
            aload 0 /* annotationType */
            invokestatic com.google.inject.internal.Annotations.isRetainedAtRuntime:(Ljava/lang/Class;)Z
         1: .line 343
            ldc "%s is not retained at runtime. Please annotate it with @Retention(RUNTIME)."
         2: .line 344
            aload 0 /* annotationType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
         3: .line 341
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
         4: .line 345
            return
        end local 0 // java.lang.Class annotationType
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0  annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)V
    MethodParameters:
                Name  Flags
      annotationType  

  private static void ensureIsBindingAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Class annotationType
         0: .line 349
            aload 0 /* annotationType */
            invokestatic com.google.inject.internal.Annotations.isBindingAnnotation:(Ljava/lang/Class;)Z
         1: .line 350
            ldc "%s is not a binding annotation. Please annotate it with @BindingAnnotation."
         2: .line 351
            aload 0 /* annotationType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
         3: .line 348
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
         4: .line 352
            return
        end local 0 // java.lang.Class annotationType
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0  annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)V
    MethodParameters:
                Name  Flags
      annotationType  
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "Key.java"
NestMembers:
  com.google.inject.Key$AnnotationInstanceStrategy  com.google.inject.Key$AnnotationStrategy  com.google.inject.Key$AnnotationTypeStrategy  com.google.inject.Key$NullAnnotationStrategy
InnerClasses:
  AnnotationInstanceStrategy = com.google.inject.Key$AnnotationInstanceStrategy of com.google.inject.Key
  abstract AnnotationStrategy = com.google.inject.Key$AnnotationStrategy of com.google.inject.Key
  AnnotationTypeStrategy = com.google.inject.Key$AnnotationTypeStrategy of com.google.inject.Key
  final NullAnnotationStrategy = com.google.inject.Key$NullAnnotationStrategy of com.google.inject.Key