class org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy implements java.lang.Comparable<org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy
  super_class: java.lang.Object
{
  private final double traversalDistance;
    descriptor: D
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final double firstLegValue;
    descriptor: D
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final double secondLegValue;
    descriptor: D
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.spatial3d.geom.Plane firstLegPlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.spatial3d.geom.Plane firstLegAbovePlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.spatial3d.geom.Plane firstLegBelowPlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.spatial3d.geom.Plane secondLegPlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.spatial3d.geom.Plane secondLegAbovePlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.spatial3d.geom.Plane secondLegBelowPlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree firstLegTree;
    descriptor: Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree secondLegTree;
    descriptor: Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.lucene.spatial3d.geom.GeoPoint intersectionPoint;
    descriptor: Lorg/apache/lucene/spatial3d/geom/GeoPoint;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final org.apache.lucene.spatial3d.geom.GeoComplexPolygon this$0;
    descriptor: Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  public void <init>(org.apache.lucene.spatial3d.geom.GeoComplexPolygon, double, double, double, org.apache.lucene.spatial3d.geom.Plane, org.apache.lucene.spatial3d.geom.Plane, org.apache.lucene.spatial3d.geom.Plane, org.apache.lucene.spatial3d.geom.Plane, org.apache.lucene.spatial3d.geom.Plane, org.apache.lucene.spatial3d.geom.Plane, org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree, org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree, org.apache.lucene.spatial3d.geom.GeoPoint);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;DDDLorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;Lorg/apache/lucene/spatial3d/geom/GeoPoint;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=17, args_size=14
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy this
        start local 2 // double traversalDistance
        start local 4 // double firstLegValue
        start local 6 // double secondLegValue
        start local 8 // org.apache.lucene.spatial3d.geom.Plane firstLegPlane
        start local 9 // org.apache.lucene.spatial3d.geom.Plane firstLegAbovePlane
        start local 10 // org.apache.lucene.spatial3d.geom.Plane firstLegBelowPlane
        start local 11 // org.apache.lucene.spatial3d.geom.Plane secondLegPlane
        start local 12 // org.apache.lucene.spatial3d.geom.Plane secondLegAbovePlane
        start local 13 // org.apache.lucene.spatial3d.geom.Plane secondLegBelowPlane
        start local 14 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree firstLegTree
        start local 15 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree secondLegTree
        start local 16 // org.apache.lucene.spatial3d.geom.GeoPoint intersectionPoint
         0: .line 656
            aload 0 /* this */
            aload 1
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
         1: .line 652
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         2: .line 657
            aload 0 /* this */
            dload 2 /* traversalDistance */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.traversalDistance:D
         3: .line 658
            aload 0 /* this */
            dload 4 /* firstLegValue */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegValue:D
         4: .line 659
            aload 0 /* this */
            dload 6 /* secondLegValue */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegValue:D
         5: .line 660
            aload 0 /* this */
            aload 8 /* firstLegPlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
         6: .line 661
            aload 0 /* this */
            aload 9 /* firstLegAbovePlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
         7: .line 662
            aload 0 /* this */
            aload 10 /* firstLegBelowPlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
         8: .line 663
            aload 0 /* this */
            aload 11 /* secondLegPlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
         9: .line 664
            aload 0 /* this */
            aload 12 /* secondLegAbovePlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        10: .line 665
            aload 0 /* this */
            aload 13 /* secondLegBelowPlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        11: .line 666
            aload 0 /* this */
            aload 14 /* firstLegTree */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegTree:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
        12: .line 667
            aload 0 /* this */
            aload 15 /* secondLegTree */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegTree:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
        13: .line 668
            aload 0 /* this */
            aload 16 /* intersectionPoint */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
        14: .line 669
            return
        end local 16 // org.apache.lucene.spatial3d.geom.GeoPoint intersectionPoint
        end local 15 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree secondLegTree
        end local 14 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree firstLegTree
        end local 13 // org.apache.lucene.spatial3d.geom.Plane secondLegBelowPlane
        end local 12 // org.apache.lucene.spatial3d.geom.Plane secondLegAbovePlane
        end local 11 // org.apache.lucene.spatial3d.geom.Plane secondLegPlane
        end local 10 // org.apache.lucene.spatial3d.geom.Plane firstLegBelowPlane
        end local 9 // org.apache.lucene.spatial3d.geom.Plane firstLegAbovePlane
        end local 8 // org.apache.lucene.spatial3d.geom.Plane firstLegPlane
        end local 6 // double secondLegValue
        end local 4 // double firstLegValue
        end local 2 // double traversalDistance
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   15     0                 this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$TraversalStrategy;
            0   15     2    traversalDistance  D
            0   15     4        firstLegValue  D
            0   15     6       secondLegValue  D
            0   15     8        firstLegPlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   15     9   firstLegAbovePlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   15    10   firstLegBelowPlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   15    11       secondLegPlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   15    12  secondLegAbovePlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   15    13  secondLegBelowPlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   15    14         firstLegTree  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
            0   15    15        secondLegTree  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
            0   15    16    intersectionPoint  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
    MethodParameters:
                     Name  Flags
      this$0               final
      traversalDistance    final
      firstLegValue        final
      secondLegValue       final
      firstLegPlane        final
      firstLegAbovePlane   final
      firstLegBelowPlane   final
      secondLegPlane       final
      secondLegAbovePlane  final
      secondLegBelowPlane  final
      firstLegTree         final
      secondLegTree        final
      intersectionPoint    final

  public boolean apply(org.apache.lucene.spatial3d.geom.GeoPoint, boolean, double, double, double);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoPoint;ZDDD)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=14, args_size=6
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy this
        start local 1 // org.apache.lucene.spatial3d.geom.GeoPoint testPoint
        start local 2 // boolean testPointInSet
        start local 3 // double x
        start local 5 // double y
        start local 7 // double z
         0: .line 677
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            aload 1 /* testPoint */
         1: .line 678
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
         2: .line 679
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            getfield org.apache.lucene.spatial3d.geom.GeoPoint.x:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            getfield org.apache.lucene.spatial3d.geom.GeoPoint.y:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            getfield org.apache.lucene.spatial3d.geom.GeoPoint.z:D
         3: .line 677
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon.createLinearCrossingEdgeIterator:(Lorg/apache/lucene/spatial3d/geom/GeoPoint;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;DDD)Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$CountingEdgeIterator;
            astore 9 /* testPointEdgeIterator */
        start local 9 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator testPointEdgeIterator
         4: .line 681
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegTree:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
            aload 9 /* testPointEdgeIterator */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegValue:D
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;D)Z
            pop
         5: .line 682
            aload 9 /* testPointEdgeIterator */
            invokeinterface org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator.isOnEdge:()Z
            istore 10 /* intersectionPointOnEdge */
        start local 10 // boolean intersectionPointOnEdge
         6: .line 685
            iload 10 /* intersectionPointOnEdge */
            ifeq 8
         7: .line 686
            new java.lang.IllegalArgumentException
            dup
            ldc "Intersection point landed on an edge -- illegal path"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 688
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator int
      StackMap stack:
            iload 10 /* intersectionPointOnEdge */
            ifne 11
            aload 9 /* testPointEdgeIterator */
            invokeinterface org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator.getCrossingCount:()I
            iconst_1
            iand
            ifne 9
            iload 2 /* testPointInSet */
            ifne 11
            goto 10
      StackMap locals:
      StackMap stack:
         9: iload 2 /* testPointInSet */
            ifeq 11
      StackMap locals:
      StackMap stack:
        10: iconst_0
            goto 12
      StackMap locals:
      StackMap stack:
        11: iconst_1
      StackMap locals:
      StackMap stack: int
        12: istore 11 /* intersectionPointInSet */
        start local 11 // boolean intersectionPointInSet
        13: .line 694
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
        14: .line 695
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        15: .line 696
            dload 3 /* x */
            dload 5 /* y */
            dload 7 /* z */
        16: .line 694
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon.createLinearCrossingEdgeIterator:(Lorg/apache/lucene/spatial3d/geom/GeoPoint;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;DDD)Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$CountingEdgeIterator;
            astore 12 /* travelEdgeIterator */
        start local 12 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator travelEdgeIterator
        17: .line 698
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegTree:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
            aload 12 /* travelEdgeIterator */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegValue:D
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;D)Z
            pop
        18: .line 699
            aload 12 /* travelEdgeIterator */
            invokeinterface org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator.isOnEdge:()Z
            ifne 21
            aload 12 /* travelEdgeIterator */
            invokeinterface org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator.getCrossingCount:()I
            iconst_1
            iand
            ifne 19
            iload 11 /* intersectionPointInSet */
            ifne 21
            goto 20
      StackMap locals: int org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator
      StackMap stack:
        19: iload 11 /* intersectionPointInSet */
            ifeq 21
      StackMap locals:
      StackMap stack:
        20: iconst_0
            goto 22
      StackMap locals:
      StackMap stack:
        21: iconst_1
      StackMap locals:
      StackMap stack: int
        22: istore 13 /* rval */
        start local 13 // boolean rval
        23: .line 702
            iload 13 /* rval */
        24: ireturn
        end local 13 // boolean rval
        end local 12 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator travelEdgeIterator
        end local 11 // boolean intersectionPointInSet
        end local 10 // boolean intersectionPointOnEdge
        end local 9 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator testPointEdgeIterator
        25: .line 703
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy org.apache.lucene.spatial3d.geom.GeoPoint int double double double
      StackMap stack: java.lang.IllegalArgumentException
            pop
        26: .line 706
            new org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator
            dup
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            aload 1 /* testPoint */
        27: .line 707
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        28: .line 708
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        29: .line 709
            dload 3 /* x */
            dload 5 /* y */
            dload 7 /* z */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
        30: .line 706
            invokespecial org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.<init>:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;Lorg/apache/lucene/spatial3d/geom/GeoPoint;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Plane;DDDLorg/apache/lucene/spatial3d/geom/GeoPoint;)V
            astore 9 /* edgeIterator */
        start local 9 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator edgeIterator
        31: .line 710
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegTree:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
            aload 9 /* edgeIterator */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegValue:D
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;D)Z
            pop
        32: .line 711
            aload 9 /* edgeIterator */
            invokeinterface org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator.isOnEdge:()Z
            ifeq 34
        33: .line 712
            iconst_1
            ireturn
        34: .line 714
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegTree:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Tree;
            aload 9 /* edgeIterator */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegValue:D
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree.traverse:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$EdgeIterator;D)Z
            pop
        35: .line 715
            aload 9 /* edgeIterator */
            invokeinterface org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator.isOnEdge:()Z
            ifne 38
            aload 9 /* edgeIterator */
            invokeinterface org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator.getCrossingCount:()I
            iconst_1
            iand
            ifne 36
            iload 2 /* testPointInSet */
            ifne 38
            goto 37
      StackMap locals:
      StackMap stack:
        36: iload 2 /* testPointInSet */
            ifeq 38
      StackMap locals:
      StackMap stack:
        37: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        38: iconst_1
            ireturn
        end local 9 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator edgeIterator
        end local 7 // double z
        end local 5 // double y
        end local 3 // double x
        end local 2 // boolean testPointInSet
        end local 1 // org.apache.lucene.spatial3d.geom.GeoPoint testPoint
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   39     0                     this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$TraversalStrategy;
            0   39     1                testPoint  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            0   39     2           testPointInSet  Z
            0   39     3                        x  D
            0   39     5                        y  D
            0   39     7                        z  D
            4   25     9    testPointEdgeIterator  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$CountingEdgeIterator;
            6   25    10  intersectionPointOnEdge  Z
           13   25    11   intersectionPointInSet  Z
           17   25    12       travelEdgeIterator  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$CountingEdgeIterator;
           23   25    13                     rval  Z
           31   39     9             edgeIterator  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$CountingEdgeIterator;
      Exception table:
        from    to  target  type
           0    24      25  Class java.lang.IllegalArgumentException
    MethodParameters:
                Name  Flags
      testPoint       final
      testPointInSet  final
      x               final
      y               final
      z               final

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy this
         0: .line 721
            new java.lang.StringBuilder
            dup
            ldc "{firstLegValue="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegValue:D
            invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
            ldc "; secondLegValue="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegValue:D
            invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
            ldc "; firstLegPlane="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.firstLegPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "; secondLegPlane="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.secondLegPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "; intersectionPoint="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            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;
            areturn
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$TraversalStrategy;

  public int compareTo(org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$TraversalStrategy;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy this
        start local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy other
         0: .line 726
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.traversalDistance:D
            aload 1 /* other */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.traversalDistance:D
            dcmpg
            ifge 2
         1: .line 727
            iconst_m1
            ireturn
         2: .line 728
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.traversalDistance:D
            aload 1 /* other */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.traversalDistance:D
            dcmpl
            ifle 4
         3: .line 729
            iconst_1
            ireturn
         4: .line 731
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy other
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$TraversalStrategy;
            0    5     1  other  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$TraversalStrategy;
    MethodParameters:
       Name  Flags
      other  final

  public int compareTo(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy.compareTo:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$TraversalStrategy;)I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Ljava/lang/Comparable<Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$TraversalStrategy;>;
SourceFile: "GeoComplexPolygon.java"
NestHost: org.apache.lucene.spatial3d.geom.GeoComplexPolygon
InnerClasses:
  private abstract CountingEdgeIterator = org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator of org.apache.lucene.spatial3d.geom.GeoComplexPolygon
  private DualCrossingEdgeIterator = org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator 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 TraversalStrategy = org.apache.lucene.spatial3d.geom.GeoComplexPolygon$TraversalStrategy of org.apache.lucene.spatial3d.geom.GeoComplexPolygon
  private abstract Tree = org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Tree of org.apache.lucene.spatial3d.geom.GeoComplexPolygon