final class com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter implements com.sun.tools.javac.code.Symbol$Completer
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter
  super_class: java.lang.Object
{
  private final com.sun.tools.javac.code.Symbol$ModuleSymbol currentModule;
    descriptor: Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.sun.tools.javac.util.List<com.sun.tools.javac.jvm.ClassReader$InterimUsesDirective> interimUsesCopy;
    descriptor: Lcom/sun/tools/javac/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/jvm/ClassReader$InterimUsesDirective;>;

  private final com.sun.tools.javac.util.List<com.sun.tools.javac.jvm.ClassReader$InterimProvidesDirective> interimProvidesCopy;
    descriptor: Lcom/sun/tools/javac/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/jvm/ClassReader$InterimProvidesDirective;>;

  final com.sun.tools.javac.jvm.ClassReader this$0;
    descriptor: Lcom/sun/tools/javac/jvm/ClassReader;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  public void <init>(com.sun.tools.javac.code.Symbol$ModuleSymbol, com.sun.tools.javac.util.List<com.sun.tools.javac.jvm.ClassReader$InterimUsesDirective>, com.sun.tools.javac.util.List<com.sun.tools.javac.jvm.ClassReader$InterimProvidesDirective>);
    descriptor: (Lcom/sun/tools/javac/jvm/ClassReader;Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;Lcom/sun/tools/javac/util/List;Lcom/sun/tools/javac/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter this
        start local 2 // com.sun.tools.javac.code.Symbol$ModuleSymbol currentModule
        start local 3 // com.sun.tools.javac.util.List interimUsesCopy
        start local 4 // com.sun.tools.javac.util.List interimProvidesCopy
         0: .line 3048
            aload 0 /* this */
            aload 1
            putfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.this$0:Lcom/sun/tools/javac/jvm/ClassReader;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 3049
            aload 0 /* this */
            aload 2 /* currentModule */
            putfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.currentModule:Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
         2: .line 3050
            aload 0 /* this */
            aload 3 /* interimUsesCopy */
            putfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.interimUsesCopy:Lcom/sun/tools/javac/util/List;
         3: .line 3051
            aload 0 /* this */
            aload 4 /* interimProvidesCopy */
            putfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.interimProvidesCopy:Lcom/sun/tools/javac/util/List;
         4: .line 3052
            return
        end local 4 // com.sun.tools.javac.util.List interimProvidesCopy
        end local 3 // com.sun.tools.javac.util.List interimUsesCopy
        end local 2 // com.sun.tools.javac.code.Symbol$ModuleSymbol currentModule
        end local 0 // com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    5     0                 this  Lcom/sun/tools/javac/jvm/ClassReader$UsesProvidesCompleter;
            0    5     2        currentModule  Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
            0    5     3      interimUsesCopy  Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/jvm/ClassReader$InterimUsesDirective;>;
            0    5     4  interimProvidesCopy  Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/jvm/ClassReader$InterimProvidesDirective;>;
    Signature: (Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/jvm/ClassReader$InterimUsesDirective;>;Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/jvm/ClassReader$InterimProvidesDirective;>;)V
    MethodParameters:
                     Name  Flags
      this$0               final
      currentModule        
      interimUsesCopy      
      interimProvidesCopy  

  public void complete(com.sun.tools.javac.code.Symbol);
    descriptor: (Lcom/sun/tools/javac/code/Symbol;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter this
        start local 1 // com.sun.tools.javac.code.Symbol sym
         0: .line 3056
            new com.sun.tools.javac.util.ListBuffer
            dup
            invokespecial com.sun.tools.javac.util.ListBuffer.<init>:()V
            astore 2 /* directives */
        start local 2 // com.sun.tools.javac.util.ListBuffer directives
         1: .line 3057
            aload 2 /* directives */
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.currentModule:Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
            getfield com.sun.tools.javac.code.Symbol$ModuleSymbol.directives:Lcom/sun/tools/javac/util/List;
            invokevirtual com.sun.tools.javac.util.ListBuffer.addAll:(Ljava/util/Collection;)Z
            pop
         2: .line 3058
            new com.sun.tools.javac.util.ListBuffer
            dup
            invokespecial com.sun.tools.javac.util.ListBuffer.<init>:()V
            astore 3 /* uses */
        start local 3 // com.sun.tools.javac.util.ListBuffer uses
         3: .line 3059
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.interimUsesCopy:Lcom/sun/tools/javac/util/List;
            invokevirtual com.sun.tools.javac.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 8
      StackMap locals: com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter com.sun.tools.javac.code.Symbol com.sun.tools.javac.util.ListBuffer com.sun.tools.javac.util.ListBuffer top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.javac.jvm.ClassReader$InterimUsesDirective
            astore 4 /* interim */
        start local 4 // com.sun.tools.javac.jvm.ClassReader$InterimUsesDirective interim
         5: .line 3060
            new com.sun.tools.javac.code.Directive$UsesDirective
            dup
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.this$0:Lcom/sun/tools/javac/jvm/ClassReader;
            getfield com.sun.tools.javac.jvm.ClassReader.syms:Lcom/sun/tools/javac/code/Symtab;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.currentModule:Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
            aload 4 /* interim */
            getfield com.sun.tools.javac.jvm.ClassReader$InterimUsesDirective.service:Lcom/sun/tools/javac/util/Name;
            invokevirtual com.sun.tools.javac.code.Symtab.enterClass:(Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;Lcom/sun/tools/javac/util/Name;)Lcom/sun/tools/javac/code/Symbol$ClassSymbol;
            invokespecial com.sun.tools.javac.code.Directive$UsesDirective.<init>:(Lcom/sun/tools/javac/code/Symbol$ClassSymbol;)V
            astore 6 /* d */
        start local 6 // com.sun.tools.javac.code.Directive$UsesDirective d
         6: .line 3061
            aload 3 /* uses */
            aload 6 /* d */
            invokevirtual com.sun.tools.javac.util.ListBuffer.add:(Ljava/lang/Object;)Z
            pop
         7: .line 3062
            aload 2 /* directives */
            aload 6 /* d */
            invokevirtual com.sun.tools.javac.util.ListBuffer.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // com.sun.tools.javac.code.Directive$UsesDirective d
        end local 4 // com.sun.tools.javac.jvm.ClassReader$InterimUsesDirective interim
         8: .line 3059
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         9: .line 3064
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.currentModule:Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
            aload 3 /* uses */
            invokevirtual com.sun.tools.javac.util.ListBuffer.toList:()Lcom/sun/tools/javac/util/List;
            putfield com.sun.tools.javac.code.Symbol$ModuleSymbol.uses:Lcom/sun/tools/javac/util/List;
        10: .line 3065
            new com.sun.tools.javac.util.ListBuffer
            dup
            invokespecial com.sun.tools.javac.util.ListBuffer.<init>:()V
            astore 4 /* provides */
        start local 4 // com.sun.tools.javac.util.ListBuffer provides
        11: .line 3066
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.interimProvidesCopy:Lcom/sun/tools/javac/util/List;
            invokevirtual com.sun.tools.javac.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 23
      StackMap locals: com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter com.sun.tools.javac.code.Symbol com.sun.tools.javac.util.ListBuffer com.sun.tools.javac.util.ListBuffer com.sun.tools.javac.util.ListBuffer top java.util.Iterator
      StackMap stack:
        12: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.javac.jvm.ClassReader$InterimProvidesDirective
            astore 5 /* interim */
        start local 5 // com.sun.tools.javac.jvm.ClassReader$InterimProvidesDirective interim
        13: .line 3067
            new com.sun.tools.javac.util.ListBuffer
            dup
            invokespecial com.sun.tools.javac.util.ListBuffer.<init>:()V
            astore 7 /* impls */
        start local 7 // com.sun.tools.javac.util.ListBuffer impls
        14: .line 3068
            aload 5 /* interim */
            getfield com.sun.tools.javac.jvm.ClassReader$InterimProvidesDirective.impls:Lcom/sun/tools/javac/util/List;
            invokevirtual com.sun.tools.javac.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 17
      StackMap locals: com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter com.sun.tools.javac.code.Symbol com.sun.tools.javac.util.ListBuffer com.sun.tools.javac.util.ListBuffer com.sun.tools.javac.util.ListBuffer com.sun.tools.javac.jvm.ClassReader$InterimProvidesDirective java.util.Iterator com.sun.tools.javac.util.ListBuffer top java.util.Iterator
      StackMap stack:
        15: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.sun.tools.javac.util.Name
            astore 8 /* impl */
        start local 8 // com.sun.tools.javac.util.Name impl
        16: .line 3069
            aload 7 /* impls */
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.this$0:Lcom/sun/tools/javac/jvm/ClassReader;
            getfield com.sun.tools.javac.jvm.ClassReader.syms:Lcom/sun/tools/javac/code/Symtab;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.currentModule:Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
            aload 8 /* impl */
            invokevirtual com.sun.tools.javac.code.Symtab.enterClass:(Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;Lcom/sun/tools/javac/util/Name;)Lcom/sun/tools/javac/code/Symbol$ClassSymbol;
            invokevirtual com.sun.tools.javac.util.ListBuffer.append:(Ljava/lang/Object;)Lcom/sun/tools/javac/util/ListBuffer;
            pop
        end local 8 // com.sun.tools.javac.util.Name impl
        17: .line 3068
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        18: .line 3071
            new com.sun.tools.javac.code.Directive$ProvidesDirective
            dup
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.this$0:Lcom/sun/tools/javac/jvm/ClassReader;
            getfield com.sun.tools.javac.jvm.ClassReader.syms:Lcom/sun/tools/javac/code/Symtab;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.currentModule:Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
            aload 5 /* interim */
            getfield com.sun.tools.javac.jvm.ClassReader$InterimProvidesDirective.service:Lcom/sun/tools/javac/util/Name;
            invokevirtual com.sun.tools.javac.code.Symtab.enterClass:(Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;Lcom/sun/tools/javac/util/Name;)Lcom/sun/tools/javac/code/Symbol$ClassSymbol;
        19: .line 3072
            aload 7 /* impls */
            invokevirtual com.sun.tools.javac.util.ListBuffer.toList:()Lcom/sun/tools/javac/util/List;
        20: .line 3071
            invokespecial com.sun.tools.javac.code.Directive$ProvidesDirective.<init>:(Lcom/sun/tools/javac/code/Symbol$ClassSymbol;Lcom/sun/tools/javac/util/List;)V
            astore 8 /* d */
        start local 8 // com.sun.tools.javac.code.Directive$ProvidesDirective d
        21: .line 3073
            aload 4 /* provides */
            aload 8 /* d */
            invokevirtual com.sun.tools.javac.util.ListBuffer.add:(Ljava/lang/Object;)Z
            pop
        22: .line 3074
            aload 2 /* directives */
            aload 8 /* d */
            invokevirtual com.sun.tools.javac.util.ListBuffer.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // com.sun.tools.javac.code.Directive$ProvidesDirective d
        end local 7 // com.sun.tools.javac.util.ListBuffer impls
        end local 5 // com.sun.tools.javac.jvm.ClassReader$InterimProvidesDirective interim
        23: .line 3066
      StackMap locals: com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter com.sun.tools.javac.code.Symbol com.sun.tools.javac.util.ListBuffer com.sun.tools.javac.util.ListBuffer com.sun.tools.javac.util.ListBuffer top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        24: .line 3076
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.currentModule:Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
            aload 4 /* provides */
            invokevirtual com.sun.tools.javac.util.ListBuffer.toList:()Lcom/sun/tools/javac/util/List;
            putfield com.sun.tools.javac.code.Symbol$ModuleSymbol.provides:Lcom/sun/tools/javac/util/List;
        25: .line 3077
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter.currentModule:Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
            aload 2 /* directives */
            invokevirtual com.sun.tools.javac.util.ListBuffer.toList:()Lcom/sun/tools/javac/util/List;
            putfield com.sun.tools.javac.code.Symbol$ModuleSymbol.directives:Lcom/sun/tools/javac/util/List;
        26: .line 3078
            return
        end local 4 // com.sun.tools.javac.util.ListBuffer provides
        end local 3 // com.sun.tools.javac.util.ListBuffer uses
        end local 2 // com.sun.tools.javac.util.ListBuffer directives
        end local 1 // com.sun.tools.javac.code.Symbol sym
        end local 0 // com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0        this  Lcom/sun/tools/javac/jvm/ClassReader$UsesProvidesCompleter;
            0   27     1         sym  Lcom/sun/tools/javac/code/Symbol;
            1   27     2  directives  Lcom/sun/tools/javac/util/ListBuffer<Lcom/sun/tools/javac/code/Directive;>;
            3   27     3        uses  Lcom/sun/tools/javac/util/ListBuffer<Lcom/sun/tools/javac/code/Directive$UsesDirective;>;
            5    8     4     interim  Lcom/sun/tools/javac/jvm/ClassReader$InterimUsesDirective;
            6    8     6           d  Lcom/sun/tools/javac/code/Directive$UsesDirective;
           11   27     4    provides  Lcom/sun/tools/javac/util/ListBuffer<Lcom/sun/tools/javac/code/Directive$ProvidesDirective;>;
           13   23     5     interim  Lcom/sun/tools/javac/jvm/ClassReader$InterimProvidesDirective;
           14   23     7       impls  Lcom/sun/tools/javac/util/ListBuffer<Lcom/sun/tools/javac/code/Symbol$ClassSymbol;>;
           16   17     8        impl  Lcom/sun/tools/javac/util/Name;
           21   23     8           d  Lcom/sun/tools/javac/code/Directive$ProvidesDirective;
    Exceptions:
      throws com.sun.tools.javac.code.Symbol$CompletionFailure
    MethodParameters:
      Name  Flags
      sym   
}
SourceFile: "ClassReader.java"
NestHost: com.sun.tools.javac.jvm.ClassReader
InnerClasses:
  public ProvidesDirective = com.sun.tools.javac.code.Directive$ProvidesDirective of com.sun.tools.javac.code.Directive
  public UsesDirective = com.sun.tools.javac.code.Directive$UsesDirective of com.sun.tools.javac.code.Directive
  public ClassSymbol = com.sun.tools.javac.code.Symbol$ClassSymbol of com.sun.tools.javac.code.Symbol
  public abstract Completer = com.sun.tools.javac.code.Symbol$Completer of com.sun.tools.javac.code.Symbol
  public CompletionFailure = com.sun.tools.javac.code.Symbol$CompletionFailure of com.sun.tools.javac.code.Symbol
  public ModuleSymbol = com.sun.tools.javac.code.Symbol$ModuleSymbol of com.sun.tools.javac.code.Symbol
  private final InterimProvidesDirective = com.sun.tools.javac.jvm.ClassReader$InterimProvidesDirective of com.sun.tools.javac.jvm.ClassReader
  private final InterimUsesDirective = com.sun.tools.javac.jvm.ClassReader$InterimUsesDirective of com.sun.tools.javac.jvm.ClassReader
  private final UsesProvidesCompleter = com.sun.tools.javac.jvm.ClassReader$UsesProvidesCompleter of com.sun.tools.javac.jvm.ClassReader