abstract class org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree
  super_class: java.lang.Object
{
  private final org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node rootNode;
    descriptor: Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected static final org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge[] EMPTY_ARRAY;
    descriptor: [Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 821
            iconst_0
            anewarray org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge
            putstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.EMPTY_ARRAY:[Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.util.List<org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=6, args_size=2
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree this
        start local 1 // java.util.List allEdges
         0: .line 826
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 828
            aload 1 /* allEdges */
            invokeinterface java.util.List.size:()I
            anewarray org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node
            astore 2 /* edges */
        start local 2 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node[] edges
         2: .line 829
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: .line 830
            aload 1 /* allEdges */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 6
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree java.util.List org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node[] int top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge
            astore 4 /* edge */
        start local 4 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge edge
         5: .line 831
            aload 2 /* edges */
            iload 3 /* i */
            iinc 3 /* i */ 1
            new org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node
            dup
            aload 4 /* edge */
            aload 0 /* this */
            aload 4 /* edge */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.getMinimum:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;)D
            aload 0 /* this */
            aload 4 /* edge */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.getMaximum:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;)D
            invokespecial org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.<init>:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;DD)V
            aastore
        end local 4 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge edge
         6: .line 830
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         7: .line 833
            aload 2 /* edges */
            invokedynamic compare()Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  org/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree.lambda$0(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;)I (6)
                  (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;)I
            invokestatic java.util.Arrays.sort:([Ljava/lang/Object;Ljava/util/Comparator;)V
         8: .line 840
            aload 0 /* this */
            aload 2 /* edges */
            iconst_0
            aload 2 /* edges */
            arraylength
            iconst_1
            isub
            invokestatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.createTree:([Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;II)Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.rootNode:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
         9: .line 841
            return
        end local 3 // int i
        end local 2 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node[] edges
        end local 1 // java.util.List allEdges
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
            0   10     1  allEdges  Ljava/util/List<Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;>;
            2   10     2     edges  [Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            3   10     3         i  I
            5    6     4      edge  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;
    Signature: (Ljava/util/List<Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;>;)V
    MethodParameters:
          Name  Flags
      allEdges  final

  private static org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node createTree(org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node[], int, int);
    descriptor: ([Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;II)Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node[] edges
        start local 1 // int low
        start local 2 // int high
         0: .line 844
            iload 1 /* low */
            iload 2 /* high */
            if_icmple 2
         1: .line 845
            aconst_null
            areturn
         2: .line 848
      StackMap locals:
      StackMap stack:
            iload 1 /* low */
            iload 2 /* high */
            iadd
            iconst_1
            iushr
            istore 3 /* mid */
        start local 3 // int mid
         3: .line 849
            aload 0 /* edges */
            iload 3 /* mid */
            aaload
            astore 4 /* newNode */
        start local 4 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node newNode
         4: .line 851
            aload 4 /* newNode */
            aload 0 /* edges */
            iload 1 /* low */
            iload 3 /* mid */
            iconst_1
            isub
            invokestatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.createTree:([Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;II)Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.left:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
         5: .line 852
            aload 4 /* newNode */
            aload 0 /* edges */
            iload 3 /* mid */
            iconst_1
            iadd
            iload 2 /* high */
            invokestatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.createTree:([Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;II)Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.right:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
         6: .line 854
            aload 4 /* newNode */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.left:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            ifnull 8
         7: .line 855
            aload 4 /* newNode */
            aload 4 /* newNode */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.max:D
            aload 4 /* newNode */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.left:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.max:D
            invokestatic java.lang.Math.max:(DD)D
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.max:D
         8: .line 857
      StackMap locals: int org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node
      StackMap stack:
            aload 4 /* newNode */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.right:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            ifnull 10
         9: .line 858
            aload 4 /* newNode */
            aload 4 /* newNode */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.max:D
            aload 4 /* newNode */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.right:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.max:D
            invokestatic java.lang.Math.max:(DD)D
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.max:D
        10: .line 860
      StackMap locals:
      StackMap stack:
            aload 4 /* newNode */
            areturn
        end local 4 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node newNode
        end local 3 // int mid
        end local 2 // int high
        end local 1 // int low
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node[] edges
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0    edges  [Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            0   11     1      low  I
            0   11     2     high  I
            3   11     3      mid  I
            4   11     4  newNode  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
    MethodParameters:
       Name  Flags
      edges  final
      low    final
      high   final

  protected abstract double getMinimum(org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;)D
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      edge  final

  protected abstract double getMaximum(org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;)D
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      edge  final

  public boolean traverse(org.apache.lucene.spatial3d.geom.GeoComplexPolygon$EdgeIterator, double);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;D)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree this
        start local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$EdgeIterator edgeIterator
        start local 2 // double value
         0: .line 881
            aload 0 /* this */
            aload 1 /* edgeIterator */
            dload 2 /* value */
            dload 2 /* value */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;DD)Z
            ireturn
        end local 2 // double value
        end local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$EdgeIterator edgeIterator
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
            0    1     1  edgeIterator  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;
            0    1     2         value  D
    MethodParameters:
              Name  Flags
      edgeIterator  final
      value         final

  public boolean traverse(org.apache.lucene.spatial3d.geom.GeoComplexPolygon$EdgeIterator, double, double);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;DD)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree this
        start local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$EdgeIterator edgeIterator
        start local 2 // double minValue
        start local 4 // double maxValue
         0: .line 892
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.rootNode:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            ifnonnull 2
         1: .line 893
            iconst_1
            ireturn
         2: .line 895
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.rootNode:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            aload 1 /* edgeIterator */
            dload 2 /* minValue */
            dload 4 /* maxValue */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.traverse:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;DD)Z
            ireturn
        end local 4 // double maxValue
        end local 2 // double minValue
        end local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$EdgeIterator edgeIterator
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
            0    3     1  edgeIterator  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;
            0    3     2      minValue  D
            0    3     4      maxValue  D
    MethodParameters:
              Name  Flags
      edgeIterator  final
      minValue      final
      maxValue      final

  private static int lambda$0(org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node, org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;)I
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node left
        start local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node right
         0: .line 834
            aload 0 /* left */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.low:D
            aload 1 /* right */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.low:D
            invokestatic java.lang.Double.compare:(DD)I
            istore 2 /* ret */
        start local 2 // int ret
         1: .line 835
            iload 2 /* ret */
            ifne 3
         2: .line 836
            aload 0 /* left */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.max:D
            aload 1 /* right */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node.max:D
            invokestatic java.lang.Double.compare:(DD)I
            istore 2 /* ret */
         3: .line 838
      StackMap locals: int
      StackMap stack:
            iload 2 /* ret */
            ireturn
        end local 2 // int ret
        end local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node right
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node left
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   left  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            0    4     1  right  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Node;
            1    4     2    ret  I
}
SourceFile: "GeoComplexPolygon.java"
NestHost: org.apache.lucene.spatial3d.geom.GeoComplexPolygon
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  private Edge = org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge of org.apache.lucene.spatial3d.geom.GeoComplexPolygon
  private abstract EdgeIterator = org.apache.lucene.spatial3d.geom.GeoComplexPolygon$EdgeIterator of org.apache.lucene.spatial3d.geom.GeoComplexPolygon
  private Node = org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Node of org.apache.lucene.spatial3d.geom.GeoComplexPolygon
  private abstract Tree = org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree of org.apache.lucene.spatial3d.geom.GeoComplexPolygon