class io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller
  super_class: java.lang.Object
{
  private final java.util.Set<java.lang.String> selectIncludes;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final java.util.Set<java.lang.String> predicateIncludes;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final java.util.Map<java.lang.String, io.ebeaninternal.server.query.SqlTreeNodeExtraJoin> joinRegister;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;>;

  private final java.util.Map<java.lang.String, io.ebeaninternal.server.query.SqlTreeNodeExtraJoin> rootRegister;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;>;

  private final io.ebeaninternal.server.query.STreeType desc;
    descriptor: Lio/ebeaninternal/server/query/STreeType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private void <init>(io.ebeaninternal.server.query.STreeType, java.util.Set<java.lang.String>, java.util.Set<java.lang.String>);
    descriptor: (Lio/ebeaninternal/server/query/STreeType;Ljava/util/Set;Ljava/util/Set;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
        start local 1 // io.ebeaninternal.server.query.STreeType desc
        start local 2 // java.util.Set selectIncludes
        start local 3 // java.util.Set predicateIncludes
         0: .line 610
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 601
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.joinRegister:Ljava/util/Map;
         2: .line 606
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.rootRegister:Ljava/util/Map;
         3: .line 612
            aload 0 /* this */
            aload 1 /* desc */
            putfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.desc:Lio/ebeaninternal/server/query/STreeType;
         4: .line 613
            aload 0 /* this */
            aload 2 /* selectIncludes */
            putfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.selectIncludes:Ljava/util/Set;
         5: .line 614
            aload 0 /* this */
            aload 3 /* predicateIncludes */
            putfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.predicateIncludes:Ljava/util/Set;
         6: .line 615
            return
        end local 3 // java.util.Set predicateIncludes
        end local 2 // java.util.Set selectIncludes
        end local 1 // io.ebeaninternal.server.query.STreeType desc
        end local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0               this  Lio/ebeaninternal/server/query/SqlTreeBuilder$IncludesDistiller;
            0    7     1               desc  Lio/ebeaninternal/server/query/STreeType;
            0    7     2     selectIncludes  Ljava/util/Set<Ljava/lang/String;>;
            0    7     3  predicateIncludes  Ljava/util/Set<Ljava/lang/String;>;
    Signature: (Lio/ebeaninternal/server/query/STreeType;Ljava/util/Set<Ljava/lang/String;>;Ljava/util/Set<Ljava/lang/String;>;)V
    MethodParameters:
                   Name  Flags
      desc               
      selectIncludes     
      predicateIncludes  

  private java.util.Collection<io.ebeaninternal.server.query.SqlTreeNodeExtraJoin> getExtraJoinRootNodes();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
         0: .line 627
            aload 0 /* this */
            invokevirtual io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.findExtras:()[Ljava/lang/String;
            astore 1 /* extras */
        start local 1 // java.lang.String[] extras
         1: .line 628
            aload 1 /* extras */
            arraylength
            ifne 3
         2: .line 629
            aload 0 /* this */
            getfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.rootRegister:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            areturn
         3: .line 634
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 1 /* extras */
            invokestatic java.util.Arrays.sort:([Ljava/lang/Object;)V
         4: .line 637
            aload 1 /* extras */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 8
      StackMap locals: io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         5: aload 5
            iload 3
            aaload
            astore 2 /* extra */
        start local 2 // java.lang.String extra
         6: .line 638
            aload 0 /* this */
            aload 2 /* extra */
            invokevirtual io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.createExtraJoin:(Ljava/lang/String;)V
        end local 2 // java.lang.String extra
         7: .line 637
            iinc 3 1
      StackMap locals:
      StackMap stack:
         8: iload 3
            iload 4
            if_icmplt 5
         9: .line 641
            aload 0 /* this */
            getfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.rootRegister:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            areturn
        end local 1 // java.lang.String[] extras
        end local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lio/ebeaninternal/server/query/SqlTreeBuilder$IncludesDistiller;
            1   10     1  extras  [Ljava/lang/String;
            6    7     2   extra  Ljava/lang/String;
    Signature: ()Ljava/util/Collection<Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;>;

  private void createExtraJoin(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
        start local 1 // java.lang.String includeProp
         0: .line 646
            aload 0 /* this */
            aload 1 /* includeProp */
            invokevirtual io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.createJoinLeaf:(Ljava/lang/String;)Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
            astore 2 /* extraJoin */
        start local 2 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin extraJoin
         1: .line 647
            aload 2 /* extraJoin */
            ifnull 4
         2: .line 652
            aload 0 /* this */
            aload 1 /* includeProp */
            aload 2 /* extraJoin */
            invokevirtual io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.findExtraJoinRoot:(Ljava/lang/String;Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;)Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
            astore 3 /* root */
        start local 3 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin root
         3: .line 656
            aload 0 /* this */
            getfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.rootRegister:Ljava/util/Map;
            aload 3 /* root */
            invokevirtual io.ebeaninternal.server.query.SqlTreeNodeExtraJoin.getName:()Ljava/lang/String;
            aload 3 /* root */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin root
         4: .line 658
      StackMap locals: io.ebeaninternal.server.query.SqlTreeNodeExtraJoin
      StackMap stack:
            return
        end local 2 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin extraJoin
        end local 1 // java.lang.String includeProp
        end local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lio/ebeaninternal/server/query/SqlTreeBuilder$IncludesDistiller;
            0    5     1  includeProp  Ljava/lang/String;
            1    5     2    extraJoin  Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
            3    4     3         root  Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
    MethodParameters:
             Name  Flags
      includeProp  

  private io.ebeaninternal.server.query.SqlTreeNodeExtraJoin createJoinLeaf(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
        start local 1 // java.lang.String propertyName
         0: .line 665
            aload 0 /* this */
            getfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.desc:Lio/ebeaninternal/server/query/STreeType;
            aload 1 /* propertyName */
            invokeinterface io.ebeaninternal.server.query.STreeType.extraJoin:(Ljava/lang/String;)Lio/ebeaninternal/server/query/ExtraJoin;
            astore 2 /* extra */
        start local 2 // io.ebeaninternal.server.query.ExtraJoin extra
         1: .line 666
            aload 2 /* extra */
            ifnonnull 3
         2: .line 667
            aconst_null
            areturn
         3: .line 669
      StackMap locals: io.ebeaninternal.server.query.ExtraJoin
      StackMap stack:
            new io.ebeaninternal.server.query.SqlTreeNodeExtraJoin
            dup
            aload 1 /* propertyName */
            aload 2 /* extra */
            invokevirtual io.ebeaninternal.server.query.ExtraJoin.getProperty:()Lio/ebeaninternal/server/query/STreePropertyAssoc;
            aload 2 /* extra */
            invokevirtual io.ebeaninternal.server.query.ExtraJoin.isContainsMany:()Z
            invokespecial io.ebeaninternal.server.query.SqlTreeNodeExtraJoin.<init>:(Ljava/lang/String;Lio/ebeaninternal/server/query/STreePropertyAssoc;Z)V
            astore 3 /* extraJoin */
        start local 3 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin extraJoin
         4: .line 670
            aload 0 /* this */
            getfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.joinRegister:Ljava/util/Map;
            aload 1 /* propertyName */
            aload 3 /* extraJoin */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 671
            aload 3 /* extraJoin */
            areturn
        end local 3 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin extraJoin
        end local 2 // io.ebeaninternal.server.query.ExtraJoin extra
        end local 1 // java.lang.String propertyName
        end local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lio/ebeaninternal/server/query/SqlTreeBuilder$IncludesDistiller;
            0    6     1  propertyName  Ljava/lang/String;
            1    6     2         extra  Lio/ebeaninternal/server/query/ExtraJoin;
            4    6     3     extraJoin  Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
    MethodParameters:
              Name  Flags
      propertyName  

  private io.ebeaninternal.server.query.SqlTreeNodeExtraJoin findExtraJoinRoot(java.lang.String, io.ebeaninternal.server.query.SqlTreeNodeExtraJoin);
    descriptor: (Ljava/lang/String;Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;)Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
        start local 1 // java.lang.String includeProp
        start local 2 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin childJoin
         0: .line 685
      StackMap locals:
      StackMap stack:
            aload 1 /* includeProp */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 3 /* dotPos */
        start local 3 // int dotPos
         1: .line 686
            iload 3 /* dotPos */
            iconst_m1
            if_icmpne 3
         2: .line 688
            aload 2 /* childJoin */
            areturn
         3: .line 692
      StackMap locals: int
      StackMap stack:
            aload 1 /* includeProp */
            iconst_0
            iload 3 /* dotPos */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 4 /* parentPropertyName */
        start local 4 // java.lang.String parentPropertyName
         4: .line 693
            aload 0 /* this */
            getfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.selectIncludes:Ljava/util/Set;
            aload 4 /* parentPropertyName */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 695
            aload 2 /* childJoin */
            areturn
         6: .line 698
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.joinRegister:Ljava/util/Map;
            aload 4 /* parentPropertyName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.ebeaninternal.server.query.SqlTreeNodeExtraJoin
            astore 5 /* parentJoin */
        start local 5 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin parentJoin
         7: .line 699
            aload 5 /* parentJoin */
            ifnonnull 9
         8: .line 701
            aload 0 /* this */
            aload 4 /* parentPropertyName */
            invokevirtual io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.createJoinLeaf:(Ljava/lang/String;)Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
            astore 5 /* parentJoin */
         9: .line 704
      StackMap locals: io.ebeaninternal.server.query.SqlTreeNodeExtraJoin
      StackMap stack:
            aload 5 /* parentJoin */
            aload 2 /* childJoin */
            invokevirtual io.ebeaninternal.server.query.SqlTreeNodeExtraJoin.addChild:(Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;)V
        10: .line 705
            aload 5 /* parentJoin */
            astore 2 /* childJoin */
        11: .line 706
            aload 4 /* parentPropertyName */
            astore 1 /* includeProp */
        end local 5 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin parentJoin
        end local 4 // java.lang.String parentPropertyName
        end local 3 // int dotPos
        12: .line 684
            goto 0
        end local 2 // io.ebeaninternal.server.query.SqlTreeNodeExtraJoin childJoin
        end local 1 // java.lang.String includeProp
        end local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   13     0                this  Lio/ebeaninternal/server/query/SqlTreeBuilder$IncludesDistiller;
            0   13     1         includeProp  Ljava/lang/String;
            0   13     2           childJoin  Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
            1   12     3              dotPos  I
            4   12     4  parentPropertyName  Ljava/lang/String;
            7   12     5          parentJoin  Lio/ebeaninternal/server/query/SqlTreeNodeExtraJoin;
    MethodParameters:
             Name  Flags
      includeProp  
      childJoin    

  private java.lang.String[] findExtras();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
         0: .line 717
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* extras */
        start local 1 // java.util.List extras
         1: .line 719
            aload 0 /* this */
            getfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.predicateIncludes:Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* predProp */
        start local 2 // java.lang.String predProp
         3: .line 720
            aload 0 /* this */
            getfield io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller.selectIncludes:Ljava/util/Set;
            aload 2 /* predProp */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 721
            aload 1 /* extras */
            aload 2 /* predProp */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.lang.String predProp
         5: .line 719
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 724
            aload 1 /* extras */
            iconst_0
            anewarray java.lang.String
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            areturn
        end local 1 // java.util.List extras
        end local 0 // io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lio/ebeaninternal/server/query/SqlTreeBuilder$IncludesDistiller;
            1    7     1    extras  Ljava/util/List<Ljava/lang/String;>;
            3    5     2  predProp  Ljava/lang/String;
}
SourceFile: "SqlTreeBuilder.java"
NestHost: io.ebeaninternal.server.query.SqlTreeBuilder
InnerClasses:
  private IncludesDistiller = io.ebeaninternal.server.query.SqlTreeBuilder$IncludesDistiller of io.ebeaninternal.server.query.SqlTreeBuilder