public class com.google.inject.Scopes
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.google.inject.Scopes
  super_class: java.lang.Object
{
  public static final com.google.inject.Scope SINGLETON;
    descriptor: Lcom/google/inject/Scope;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final com.google.inject.Scope NO_SCOPE;
    descriptor: Lcom/google/inject/Scope;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final com.google.inject.spi.BindingScopingVisitor<java.lang.Boolean> IS_SINGLETON_VISITOR;
    descriptor: Lcom/google/inject/spi/BindingScopingVisitor;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lcom/google/inject/spi/BindingScopingVisitor<Ljava/lang/Boolean;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 36
            new com.google.inject.internal.SingletonScope
            dup
            invokespecial com.google.inject.internal.SingletonScope.<init>:()V
            putstatic com.google.inject.Scopes.SINGLETON:Lcom/google/inject/Scope;
         1: .line 49
            new com.google.inject.Scopes$1
            dup
            invokespecial com.google.inject.Scopes$1.<init>:()V
         2: .line 48
            putstatic com.google.inject.Scopes.NO_SCOPE:Lcom/google/inject/Scope;
         3: .line 62
            new com.google.inject.Scopes$2
            dup
            invokespecial com.google.inject.Scopes$2.<init>:()V
         4: .line 61
            putstatic com.google.inject.Scopes.IS_SINGLETON_VISITOR:Lcom/google/inject/spi/BindingScopingVisitor;
         5: .line 83
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.inject.Scopes this
         0: .line 33
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.inject.Scopes this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/inject/Scopes;

  public static boolean isSingleton(com.google.inject.Binding<?>);
    descriptor: (Lcom/google/inject/Binding;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // com.google.inject.Binding binding
         0: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* binding */
            getstatic com.google.inject.Scopes.IS_SINGLETON_VISITOR:Lcom/google/inject/spi/BindingScopingVisitor;
            invokeinterface com.google.inject.Binding.acceptScopingVisitor:(Lcom/google/inject/spi/BindingScopingVisitor;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            istore 1 /* singleton */
        start local 1 // boolean singleton
         1: .line 96
            iload 1 /* singleton */
            ifeq 3
         2: .line 97
            iconst_1
            ireturn
         3: .line 100
      StackMap locals: int
      StackMap stack:
            aload 0 /* binding */
            instanceof com.google.inject.internal.LinkedBindingImpl
            ifeq 9
         4: .line 101
            aload 0 /* binding */
            checkcast com.google.inject.internal.LinkedBindingImpl
            astore 2 /* linkedBinding */
        start local 2 // com.google.inject.internal.LinkedBindingImpl linkedBinding
         5: .line 102
            aload 2 /* linkedBinding */
            invokevirtual com.google.inject.internal.LinkedBindingImpl.getInjector:()Lcom/google/inject/internal/InjectorImpl;
            astore 3 /* injector */
        start local 3 // com.google.inject.Injector injector
         6: .line 103
            aload 3 /* injector */
            ifnull 15
         7: .line 104
            aload 3 /* injector */
            aload 2 /* linkedBinding */
            invokevirtual com.google.inject.internal.LinkedBindingImpl.getLinkedKey:()Lcom/google/inject/Key;
            invokeinterface com.google.inject.Injector.getBinding:(Lcom/google/inject/Key;)Lcom/google/inject/Binding;
            astore 0 /* binding */
         8: .line 105
            goto 0
        end local 3 // com.google.inject.Injector injector
        end local 2 // com.google.inject.internal.LinkedBindingImpl linkedBinding
         9: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* binding */
            instanceof com.google.inject.spi.ExposedBinding
            ifeq 15
        10: .line 108
            aload 0 /* binding */
            checkcast com.google.inject.spi.ExposedBinding
            astore 2 /* exposedBinding */
        start local 2 // com.google.inject.spi.ExposedBinding exposedBinding
        11: .line 109
            aload 2 /* exposedBinding */
            invokeinterface com.google.inject.spi.ExposedBinding.getPrivateElements:()Lcom/google/inject/spi/PrivateElements;
            invokeinterface com.google.inject.spi.PrivateElements.getInjector:()Lcom/google/inject/Injector;
            astore 3 /* injector */
        start local 3 // com.google.inject.Injector injector
        12: .line 110
            aload 3 /* injector */
            ifnull 15
        13: .line 111
            aload 3 /* injector */
            aload 2 /* exposedBinding */
            invokeinterface com.google.inject.spi.ExposedBinding.getKey:()Lcom/google/inject/Key;
            invokeinterface com.google.inject.Injector.getBinding:(Lcom/google/inject/Key;)Lcom/google/inject/Binding;
            astore 0 /* binding */
        14: .line 112
            goto 0
        end local 3 // com.google.inject.Injector injector
        end local 2 // com.google.inject.spi.ExposedBinding exposedBinding
        15: .line 116
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // boolean singleton
        end local 0 // com.google.inject.Binding binding
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   16     0         binding  Lcom/google/inject/Binding<*>;
            1   16     1       singleton  Z
            5    9     2   linkedBinding  Lcom/google/inject/internal/LinkedBindingImpl<*>;
            6    9     3        injector  Lcom/google/inject/Injector;
           11   15     2  exposedBinding  Lcom/google/inject/spi/ExposedBinding<*>;
           12   15     3        injector  Lcom/google/inject/Injector;
    Signature: (Lcom/google/inject/Binding<*>;)Z
    MethodParameters:
         Name  Flags
      binding  

  public static boolean isScoped(com.google.inject.Binding<?>, com.google.inject.Scope, java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Lcom/google/inject/Binding;Lcom/google/inject/Scope;Ljava/lang/Class;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.google.inject.Binding binding
        start local 1 // com.google.inject.Scope scope
        start local 2 // java.lang.Class scopeAnnotation
         0: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* binding */
         1: .line 136
            new com.google.inject.Scopes$3
            dup
            aload 2 /* scopeAnnotation */
            aload 1 /* scope */
            invokespecial com.google.inject.Scopes$3.<init>:(Ljava/lang/Class;Lcom/google/inject/Scope;)V
         2: .line 135
            invokeinterface com.google.inject.Binding.acceptScopingVisitor:(Lcom/google/inject/spi/BindingScopingVisitor;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
         3: .line 134
            istore 3 /* matches */
        start local 3 // boolean matches
         4: .line 158
            iload 3 /* matches */
            ifeq 6
         5: .line 159
            iconst_1
            ireturn
         6: .line 162
      StackMap locals: int
      StackMap stack:
            aload 0 /* binding */
            instanceof com.google.inject.internal.LinkedBindingImpl
            ifeq 12
         7: .line 163
            aload 0 /* binding */
            checkcast com.google.inject.internal.LinkedBindingImpl
            astore 4 /* linkedBinding */
        start local 4 // com.google.inject.internal.LinkedBindingImpl linkedBinding
         8: .line 164
            aload 4 /* linkedBinding */
            invokevirtual com.google.inject.internal.LinkedBindingImpl.getInjector:()Lcom/google/inject/internal/InjectorImpl;
            astore 5 /* injector */
        start local 5 // com.google.inject.Injector injector
         9: .line 165
            aload 5 /* injector */
            ifnull 18
        10: .line 166
            aload 5 /* injector */
            aload 4 /* linkedBinding */
            invokevirtual com.google.inject.internal.LinkedBindingImpl.getLinkedKey:()Lcom/google/inject/Key;
            invokeinterface com.google.inject.Injector.getBinding:(Lcom/google/inject/Key;)Lcom/google/inject/Binding;
            astore 0 /* binding */
        11: .line 167
            goto 0
        end local 5 // com.google.inject.Injector injector
        end local 4 // com.google.inject.internal.LinkedBindingImpl linkedBinding
        12: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* binding */
            instanceof com.google.inject.spi.ExposedBinding
            ifeq 18
        13: .line 170
            aload 0 /* binding */
            checkcast com.google.inject.spi.ExposedBinding
            astore 4 /* exposedBinding */
        start local 4 // com.google.inject.spi.ExposedBinding exposedBinding
        14: .line 171
            aload 4 /* exposedBinding */
            invokeinterface com.google.inject.spi.ExposedBinding.getPrivateElements:()Lcom/google/inject/spi/PrivateElements;
            invokeinterface com.google.inject.spi.PrivateElements.getInjector:()Lcom/google/inject/Injector;
            astore 5 /* injector */
        start local 5 // com.google.inject.Injector injector
        15: .line 172
            aload 5 /* injector */
            ifnull 18
        16: .line 173
            aload 5 /* injector */
            aload 4 /* exposedBinding */
            invokeinterface com.google.inject.spi.ExposedBinding.getKey:()Lcom/google/inject/Key;
            invokeinterface com.google.inject.Injector.getBinding:(Lcom/google/inject/Key;)Lcom/google/inject/Binding;
            astore 0 /* binding */
        17: .line 174
            goto 0
        end local 5 // com.google.inject.Injector injector
        end local 4 // com.google.inject.spi.ExposedBinding exposedBinding
        18: .line 178
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // boolean matches
        end local 2 // java.lang.Class scopeAnnotation
        end local 1 // com.google.inject.Scope scope
        end local 0 // com.google.inject.Binding binding
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   19     0          binding  Lcom/google/inject/Binding<*>;
            0   19     1            scope  Lcom/google/inject/Scope;
            0   19     2  scopeAnnotation  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            4   19     3          matches  Z
            8   12     4    linkedBinding  Lcom/google/inject/internal/LinkedBindingImpl<*>;
            9   12     5         injector  Lcom/google/inject/Injector;
           14   18     4   exposedBinding  Lcom/google/inject/spi/ExposedBinding<*>;
           15   18     5         injector  Lcom/google/inject/Injector;
    Signature: (Lcom/google/inject/Binding<*>;Lcom/google/inject/Scope;Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Z
    MethodParameters:
                 Name  Flags
      binding          
      scope            final
      scopeAnnotation  final

  public static boolean isCircularProxy(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object object
         0: .line 192
            aload 0 /* object */
            instanceof com.google.inject.internal.CircularDependencyProxy
            ireturn
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  object  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      object  
}
SourceFile: "Scopes.java"
NestMembers:
  com.google.inject.Scopes$1  com.google.inject.Scopes$2  com.google.inject.Scopes$3
InnerClasses:
  com.google.inject.Scopes$1
  com.google.inject.Scopes$2
  com.google.inject.Scopes$3