class org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator implements org.apache.lucene.spatial3d.geom.GeoComplexPolygon$CountingEdgeIterator
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator
  super_class: java.lang.Object
{
  private java.util.Set<org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge> seenEdges;
    descriptor: Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Set<Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;>;

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

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

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

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

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

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

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

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

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

  private final double thePointZ;
    descriptor: D
    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

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

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

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

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

  private boolean computedInsideOutside;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private org.apache.lucene.spatial3d.geom.Plane testPointInsidePlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.lucene.spatial3d.geom.Plane testPointOutsidePlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.lucene.spatial3d.geom.Plane travelInsidePlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.lucene.spatial3d.geom.Plane travelOutsidePlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/Plane;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.lucene.spatial3d.geom.SidedPlane insideTestPointCutoffPlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/SidedPlane;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.lucene.spatial3d.geom.SidedPlane insideTravelCutoffPlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/SidedPlane;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.lucene.spatial3d.geom.SidedPlane outsideTestPointCutoffPlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/SidedPlane;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.lucene.spatial3d.geom.SidedPlane outsideTravelCutoffPlane;
    descriptor: Lorg/apache/lucene/spatial3d/geom/SidedPlane;
    flags: (0x0002) ACC_PRIVATE

  private boolean onEdge;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private int innerCrossingCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int outerCrossingCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1342
            ldc Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.lucene.spatial3d.geom.GeoComplexPolygon, org.apache.lucene.spatial3d.geom.GeoPoint, 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, double, double, double, org.apache.lucene.spatial3d.geom.GeoPoint);
    descriptor: (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
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=20, args_size=13
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
        start local 2 // org.apache.lucene.spatial3d.geom.GeoPoint testPoint
        start local 3 // org.apache.lucene.spatial3d.geom.Plane testPointPlane
        start local 4 // org.apache.lucene.spatial3d.geom.Plane testPointAbovePlane
        start local 5 // org.apache.lucene.spatial3d.geom.Plane testPointBelowPlane
        start local 6 // org.apache.lucene.spatial3d.geom.Plane travelPlane
        start local 7 // org.apache.lucene.spatial3d.geom.Plane travelAbovePlane
        start local 8 // org.apache.lucene.spatial3d.geom.Plane travelBelowPlane
        start local 9 // double thePointX
        start local 11 // double thePointY
        start local 13 // double thePointZ
        start local 15 // org.apache.lucene.spatial3d.geom.GeoPoint intersectionPoint
         0: .line 1386
            aload 0 /* this */
            aload 1
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
         1: .line 1383
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         2: .line 1346
            aload 0 /* this */
            aconst_null
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.seenEdges:Ljava/util/Set;
         3: .line 1368
            aload 0 /* this */
            iconst_0
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.computedInsideOutside:Z
         4: .line 1379
            aload 0 /* this */
            iconst_0
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.onEdge:Z
         5: .line 1380
            aload 0 /* this */
            iconst_0
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.innerCrossingCount:I
         6: .line 1381
            aload 0 /* this */
            iconst_0
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.outerCrossingCount:I
         7: .line 1387
            aload 0 /* this */
            aload 2 /* testPoint */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
         8: .line 1388
            aload 0 /* this */
            aload 3 /* testPointPlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
         9: .line 1389
            aload 0 /* this */
            aload 4 /* testPointAbovePlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        10: .line 1390
            aload 0 /* this */
            aload 5 /* testPointBelowPlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        11: .line 1391
            aload 0 /* this */
            aload 6 /* travelPlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        12: .line 1392
            aload 0 /* this */
            aload 7 /* travelAbovePlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        13: .line 1393
            aload 0 /* this */
            aload 8 /* travelBelowPlane */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        14: .line 1394
            aload 0 /* this */
            dload 9 /* thePointX */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointX:D
        15: .line 1395
            aload 0 /* this */
            dload 11 /* thePointY */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointY:D
        16: .line 1396
            aload 0 /* this */
            dload 13 /* thePointZ */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointZ:D
        17: .line 1397
            aload 0 /* this */
            aload 15 /* intersectionPoint */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
        18: .line 1403
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 19
            aload 6 /* travelPlane */
            aload 15 /* intersectionPoint */
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.evaluateIsZero:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 19
            new java.lang.AssertionError
            dup
            ldc "intersection point must be on travel plane"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        19: .line 1404
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon org.apache.lucene.spatial3d.geom.GeoPoint 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 double double double org.apache.lucene.spatial3d.geom.GeoPoint
      StackMap stack:
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 20
            aload 3 /* testPointPlane */
            aload 15 /* intersectionPoint */
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.evaluateIsZero:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 20
            new java.lang.AssertionError
            dup
            ldc "intersection point must be on test point plane"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        20: .line 1409
      StackMap locals:
      StackMap stack:
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 21
            aload 2 /* testPoint */
            aload 15 /* intersectionPoint */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoPoint.isNumericallyIdentical:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 21
            new java.lang.AssertionError
            dup
            ldc "test point is the same as intersection point"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        21: .line 1410
      StackMap locals:
      StackMap stack:
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 22
            aload 15 /* intersectionPoint */
            dload 9 /* thePointX */
            dload 11 /* thePointY */
            dload 13 /* thePointZ */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoPoint.isNumericallyIdentical:(DDD)Z
            ifeq 22
            new java.lang.AssertionError
            dup
            ldc "check point is same as intersection point"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        22: .line 1420
      StackMap locals:
      StackMap stack:
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            aload 15 /* intersectionPoint */
            aload 3 /* testPointPlane */
            aload 2 /* testPoint */
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;)V
            astore 16 /* testPointBound1 */
        start local 16 // org.apache.lucene.spatial3d.geom.SidedPlane testPointBound1
        23: .line 1421
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            aload 2 /* testPoint */
            aload 3 /* testPointPlane */
            aload 15 /* intersectionPoint */
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;)V
            astore 17 /* testPointBound2 */
        start local 17 // org.apache.lucene.spatial3d.geom.SidedPlane testPointBound2
        24: .line 1422
            aload 16 /* testPointBound1 */
            aload 17 /* testPointBound2 */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isFunctionallyIdentical:(Lorg/apache/lucene/spatial3d/geom/Plane;)Z
            ifeq 26
        25: .line 1423
            new java.lang.IllegalArgumentException
            dup
            ldc "Dual iterator unreliable when bounds planes are functionally identical"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 1425
      StackMap locals: org.apache.lucene.spatial3d.geom.SidedPlane org.apache.lucene.spatial3d.geom.SidedPlane
      StackMap stack:
            aload 0 /* this */
            aload 16 /* testPointBound1 */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
        27: .line 1426
            aload 0 /* this */
            aload 17 /* testPointBound2 */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOtherCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
        28: .line 1428
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            aload 15 /* intersectionPoint */
            aload 6 /* travelPlane */
            dload 9 /* thePointX */
            dload 11 /* thePointY */
            dload 13 /* thePointZ */
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;DDD)V
            astore 18 /* checkPointBound1 */
        start local 18 // org.apache.lucene.spatial3d.geom.SidedPlane checkPointBound1
        29: .line 1429
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            dload 9 /* thePointX */
            dload 11 /* thePointY */
            dload 13 /* thePointZ */
            aload 6 /* travelPlane */
            aload 15 /* intersectionPoint */
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(DDDLorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;)V
            astore 19 /* checkPointBound2 */
        start local 19 // org.apache.lucene.spatial3d.geom.SidedPlane checkPointBound2
        30: .line 1430
            aload 18 /* checkPointBound1 */
            aload 19 /* checkPointBound2 */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isFunctionallyIdentical:(Lorg/apache/lucene/spatial3d/geom/Plane;)Z
            ifeq 32
        31: .line 1431
            new java.lang.IllegalArgumentException
            dup
            ldc "Dual iterator unreliable when bounds planes are functionally identical"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 1433
      StackMap locals: org.apache.lucene.spatial3d.geom.SidedPlane org.apache.lucene.spatial3d.geom.SidedPlane
      StackMap stack:
            aload 0 /* this */
            aload 18 /* checkPointBound1 */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
        33: .line 1434
            aload 0 /* this */
            aload 19 /* checkPointBound2 */
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointOtherCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
        34: .line 1437
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 35
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 15 /* intersectionPoint */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 35
            new java.lang.AssertionError
            dup
            ldc "intersection must be within testPointCutoffPlane"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        35: .line 1438
      StackMap locals:
      StackMap stack:
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 36
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOtherCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 15 /* intersectionPoint */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 36
            new java.lang.AssertionError
            dup
            ldc "intersection must be within testPointOtherCutoffPlane"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        36: .line 1439
      StackMap locals:
      StackMap stack:
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 37
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 15 /* intersectionPoint */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 37
            new java.lang.AssertionError
            dup
            ldc "intersection must be within checkPointCutoffPlane"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        37: .line 1440
      StackMap locals:
      StackMap stack:
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 38
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointOtherCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 15 /* intersectionPoint */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 38
            new java.lang.AssertionError
            dup
            ldc "intersection must be within checkPointOtherCutoffPlane"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        38: .line 1442
      StackMap locals:
      StackMap stack:
            return
        end local 19 // org.apache.lucene.spatial3d.geom.SidedPlane checkPointBound2
        end local 18 // org.apache.lucene.spatial3d.geom.SidedPlane checkPointBound1
        end local 17 // org.apache.lucene.spatial3d.geom.SidedPlane testPointBound2
        end local 16 // org.apache.lucene.spatial3d.geom.SidedPlane testPointBound1
        end local 15 // org.apache.lucene.spatial3d.geom.GeoPoint intersectionPoint
        end local 13 // double thePointZ
        end local 11 // double thePointY
        end local 9 // double thePointX
        end local 8 // org.apache.lucene.spatial3d.geom.Plane travelBelowPlane
        end local 7 // org.apache.lucene.spatial3d.geom.Plane travelAbovePlane
        end local 6 // org.apache.lucene.spatial3d.geom.Plane travelPlane
        end local 5 // org.apache.lucene.spatial3d.geom.Plane testPointBelowPlane
        end local 4 // org.apache.lucene.spatial3d.geom.Plane testPointAbovePlane
        end local 3 // org.apache.lucene.spatial3d.geom.Plane testPointPlane
        end local 2 // org.apache.lucene.spatial3d.geom.GeoPoint testPoint
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   39     0                 this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$DualCrossingEdgeIterator;
            0   39     2            testPoint  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            0   39     3       testPointPlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   39     4  testPointAbovePlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   39     5  testPointBelowPlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   39     6          travelPlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   39     7     travelAbovePlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   39     8     travelBelowPlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   39     9            thePointX  D
            0   39    11            thePointY  D
            0   39    13            thePointZ  D
            0   39    15    intersectionPoint  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           23   39    16      testPointBound1  Lorg/apache/lucene/spatial3d/geom/SidedPlane;
           24   39    17      testPointBound2  Lorg/apache/lucene/spatial3d/geom/SidedPlane;
           29   39    18     checkPointBound1  Lorg/apache/lucene/spatial3d/geom/SidedPlane;
           30   39    19     checkPointBound2  Lorg/apache/lucene/spatial3d/geom/SidedPlane;
    MethodParameters:
                     Name  Flags
      this$0               final
      testPoint            final
      testPointPlane       final
      testPointAbovePlane  final
      testPointBelowPlane  final
      travelPlane          final
      travelAbovePlane     final
      travelBelowPlane     final
      thePointX            final
      thePointY            final
      thePointZ            final
      intersectionPoint    final

  protected void computeInsideOutside();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=11, locals=11, args_size=1
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
         0: .line 1445
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.computedInsideOutside:Z
            ifne 59
         1: .line 1447
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            getfield org.apache.lucene.spatial3d.geom.Plane.D:D
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;D)V
            astore 1 /* intersectionBound1 */
        start local 1 // org.apache.lucene.spatial3d.geom.Membership intersectionBound1
         2: .line 1449
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointX:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointY:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointZ:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            getfield org.apache.lucene.spatial3d.geom.Plane.D:D
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(DDDLorg/apache/lucene/spatial3d/geom/Vector;D)V
            astore 2 /* intersectionBound2 */
        start local 2 // org.apache.lucene.spatial3d.geom.Membership intersectionBound2
         3: .line 1451
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 4
            aload 1 /* intersectionBound1 */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            invokeinterface org.apache.lucene.spatial3d.geom.Membership.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 4
            new java.lang.AssertionError
            dup
            ldc "intersection must be within intersectionBound1"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         4: .line 1452
      StackMap locals: org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership
      StackMap stack:
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 5
            aload 2 /* intersectionBound2 */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            invokeinterface org.apache.lucene.spatial3d.geom.Membership.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 5
            new java.lang.AssertionError
            dup
            ldc "intersection must be within intersectionBound2"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         5: .line 1460
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon.planetModel:Lorg/apache/lucene/spatial3d/geom/PlanetModel;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            iconst_2
            anewarray org.apache.lucene.spatial3d.geom.Membership
            dup
            iconst_0
            aload 1 /* intersectionBound1 */
            aastore
            dup
            iconst_1
            aload 2 /* intersectionBound2 */
            aastore
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.findIntersections:(Lorg/apache/lucene/spatial3d/geom/PlanetModel;Lorg/apache/lucene/spatial3d/geom/Plane;[Lorg/apache/lucene/spatial3d/geom/Membership;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 3 /* aboveAbove */
        start local 3 // org.apache.lucene.spatial3d.geom.GeoPoint[] aboveAbove
         6: .line 1461
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 7
            aload 3 /* aboveAbove */
            ifnonnull 7
            new java.lang.AssertionError
            dup
            ldc "Above + above should not be coplanar"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         7: .line 1462
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon.planetModel:Lorg/apache/lucene/spatial3d/geom/PlanetModel;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            iconst_2
            anewarray org.apache.lucene.spatial3d.geom.Membership
            dup
            iconst_0
            aload 1 /* intersectionBound1 */
            aastore
            dup
            iconst_1
            aload 2 /* intersectionBound2 */
            aastore
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.findIntersections:(Lorg/apache/lucene/spatial3d/geom/PlanetModel;Lorg/apache/lucene/spatial3d/geom/Plane;[Lorg/apache/lucene/spatial3d/geom/Membership;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 4 /* aboveBelow */
        start local 4 // org.apache.lucene.spatial3d.geom.GeoPoint[] aboveBelow
         8: .line 1463
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 9
            aload 4 /* aboveBelow */
            ifnonnull 9
            new java.lang.AssertionError
            dup
            ldc "Above + below should not be coplanar"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         9: .line 1464
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon.planetModel:Lorg/apache/lucene/spatial3d/geom/PlanetModel;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            iconst_2
            anewarray org.apache.lucene.spatial3d.geom.Membership
            dup
            iconst_0
            aload 1 /* intersectionBound1 */
            aastore
            dup
            iconst_1
            aload 2 /* intersectionBound2 */
            aastore
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.findIntersections:(Lorg/apache/lucene/spatial3d/geom/PlanetModel;Lorg/apache/lucene/spatial3d/geom/Plane;[Lorg/apache/lucene/spatial3d/geom/Membership;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 5 /* belowBelow */
        start local 5 // org.apache.lucene.spatial3d.geom.GeoPoint[] belowBelow
        10: .line 1465
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 11
            aload 5 /* belowBelow */
            ifnonnull 11
            new java.lang.AssertionError
            dup
            ldc "Below + below should not be coplanar"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        11: .line 1466
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon.planetModel:Lorg/apache/lucene/spatial3d/geom/PlanetModel;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            iconst_2
            anewarray org.apache.lucene.spatial3d.geom.Membership
            dup
            iconst_0
            aload 1 /* intersectionBound1 */
            aastore
            dup
            iconst_1
            aload 2 /* intersectionBound2 */
            aastore
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.findIntersections:(Lorg/apache/lucene/spatial3d/geom/PlanetModel;Lorg/apache/lucene/spatial3d/geom/Plane;[Lorg/apache/lucene/spatial3d/geom/Membership;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 6 /* belowAbove */
        start local 6 // org.apache.lucene.spatial3d.geom.GeoPoint[] belowAbove
        12: .line 1467
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 13
            aload 6 /* belowAbove */
            ifnonnull 13
            new java.lang.AssertionError
            dup
            ldc "Below + above should not be coplanar"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        13: .line 1469
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            getstatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.$assertionsDisabled:Z
            ifne 22
            aload 3 /* aboveAbove */
            arraylength
            ifle 14
            iconst_1
            goto 15
      StackMap locals:
      StackMap stack:
        14: iconst_0
      StackMap locals:
      StackMap stack: int
        15: aload 4 /* aboveBelow */
            arraylength
            ifle 16
            iconst_1
            goto 17
      StackMap locals:
      StackMap stack: int
        16: iconst_0
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack: int int
        17: iadd
            aload 5 /* belowBelow */
            arraylength
            ifle 18
            iconst_1
            goto 19
      StackMap locals:
      StackMap stack: int
        18: iconst_0
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack: int int
        19: iadd
            aload 6 /* belowAbove */
            arraylength
            ifle 20
            iconst_1
            goto 21
      StackMap locals:
      StackMap stack: int
        20: iconst_0
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack: int int
        21: iadd
            iconst_1
            if_icmpeq 22
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Can be exactly one inside point, instead was: aa="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* aboveAbove */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " xyScaling="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* aboveBelow */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bb="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* belowBelow */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " ba="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* belowAbove */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        22: .line 1472
      StackMap locals:
      StackMap stack:
            aload 3 /* aboveAbove */
            arraylength
            ifle 29
        23: .line 1473
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        24: .line 1474
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        25: .line 1475
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        26: .line 1476
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        27: .line 1477
            aload 3 /* aboveAbove */
            astore 7 /* insideInsidePoints */
        start local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
        28: .line 1478
            goto 51
        end local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
      StackMap locals:
      StackMap stack:
        29: aload 4 /* aboveBelow */
            arraylength
            ifle 36
        30: .line 1479
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        31: .line 1480
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        32: .line 1481
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        33: .line 1482
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        34: .line 1483
            aload 4 /* aboveBelow */
            astore 7 /* insideInsidePoints */
        start local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
        35: .line 1484
            goto 51
        end local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
      StackMap locals:
      StackMap stack:
        36: aload 5 /* belowBelow */
            arraylength
            ifle 43
        37: .line 1485
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        38: .line 1486
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        39: .line 1487
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        40: .line 1488
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        41: .line 1489
            aload 5 /* belowBelow */
            astore 7 /* insideInsidePoints */
        start local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
        42: .line 1490
            goto 51
        end local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
      StackMap locals:
      StackMap stack:
        43: aload 6 /* belowAbove */
            arraylength
            ifle 50
        44: .line 1491
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        45: .line 1492
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        46: .line 1493
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        47: .line 1494
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
        48: .line 1495
            aload 6 /* belowAbove */
            astore 7 /* insideInsidePoints */
        start local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
        49: .line 1496
            goto 51
        end local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
        50: .line 1497
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Can't find traversal intersection among: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointAbovePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointBelowPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        start local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
        51: .line 1503
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            aload 0 /* this */
            aload 7 /* insideInsidePoints */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.pickProximate:([Lorg/apache/lucene/spatial3d/geom/GeoPoint;)Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 8 /* insideInsidePoint */
        start local 8 // org.apache.lucene.spatial3d.geom.GeoPoint insideInsidePoint
        52: .line 1507
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon.planetModel:Lorg/apache/lucene/spatial3d/geom/PlanetModel;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            iconst_0
            anewarray org.apache.lucene.spatial3d.geom.Membership
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.findIntersections:(Lorg/apache/lucene/spatial3d/geom/PlanetModel;Lorg/apache/lucene/spatial3d/geom/Plane;[Lorg/apache/lucene/spatial3d/geom/Membership;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 9 /* outsideOutsidePoints */
        start local 9 // org.apache.lucene.spatial3d.geom.GeoPoint[] outsideOutsidePoints
        53: .line 1508
            aload 0 /* this */
            aload 9 /* outsideOutsidePoints */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.pickProximate:([Lorg/apache/lucene/spatial3d/geom/GeoPoint;)Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 10 /* outsideOutsidePoint */
        start local 10 // org.apache.lucene.spatial3d.geom.GeoPoint outsideOutsidePoint
        54: .line 1510
            aload 0 /* this */
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointX:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointY:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointZ:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 8 /* insideInsidePoint */
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(DDDLorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;)V
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.insideTravelCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
        55: .line 1511
            aload 0 /* this */
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointX:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointY:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointZ:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 10 /* outsideOutsidePoint */
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(DDDLorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;)V
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.outsideTravelCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
        56: .line 1512
            aload 0 /* this */
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 8 /* insideInsidePoint */
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;)V
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.insideTestPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
        57: .line 1513
            aload 0 /* this */
            new org.apache.lucene.spatial3d.geom.SidedPlane
            dup
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 10 /* outsideOutsidePoint */
            invokespecial org.apache.lucene.spatial3d.geom.SidedPlane.<init>:(Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;Lorg/apache/lucene/spatial3d/geom/Vector;)V
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.outsideTestPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
        58: .line 1522
            aload 0 /* this */
            iconst_1
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.computedInsideOutside:Z
        end local 10 // org.apache.lucene.spatial3d.geom.GeoPoint outsideOutsidePoint
        end local 9 // org.apache.lucene.spatial3d.geom.GeoPoint[] outsideOutsidePoints
        end local 8 // org.apache.lucene.spatial3d.geom.GeoPoint insideInsidePoint
        end local 7 // org.apache.lucene.spatial3d.geom.GeoPoint[] insideInsidePoints
        end local 6 // org.apache.lucene.spatial3d.geom.GeoPoint[] belowAbove
        end local 5 // org.apache.lucene.spatial3d.geom.GeoPoint[] belowBelow
        end local 4 // org.apache.lucene.spatial3d.geom.GeoPoint[] aboveBelow
        end local 3 // org.apache.lucene.spatial3d.geom.GeoPoint[] aboveAbove
        end local 2 // org.apache.lucene.spatial3d.geom.Membership intersectionBound2
        end local 1 // org.apache.lucene.spatial3d.geom.Membership intersectionBound1
        59: .line 1524
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator
      StackMap stack:
            return
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   60     0                  this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$DualCrossingEdgeIterator;
            2   59     1    intersectionBound1  Lorg/apache/lucene/spatial3d/geom/Membership;
            3   59     2    intersectionBound2  Lorg/apache/lucene/spatial3d/geom/Membership;
            6   59     3            aboveAbove  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            8   59     4            aboveBelow  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           10   59     5            belowBelow  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           12   59     6            belowAbove  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           28   29     7    insideInsidePoints  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           35   36     7    insideInsidePoints  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           42   43     7    insideInsidePoints  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           49   50     7    insideInsidePoints  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           51   59     7    insideInsidePoints  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           52   59     8     insideInsidePoint  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           53   59     9  outsideOutsidePoints  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           54   59    10   outsideOutsidePoint  Lorg/apache/lucene/spatial3d/geom/GeoPoint;

  private org.apache.lucene.spatial3d.geom.GeoPoint pickProximate(org.apache.lucene.spatial3d.geom.GeoPoint[]);
    descriptor: ([Lorg/apache/lucene/spatial3d/geom/GeoPoint;)Lorg/apache/lucene/spatial3d/geom/GeoPoint;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
        start local 1 // org.apache.lucene.spatial3d.geom.GeoPoint[] points
         0: .line 1527
            aload 1 /* points */
            arraylength
            ifne 2
         1: .line 1528
            new java.lang.IllegalArgumentException
            dup
            ldc "No off-plane intersection points were found; can't compute traversal"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1529
      StackMap locals:
      StackMap stack:
            aload 1 /* points */
            arraylength
            iconst_1
            if_icmpne 4
         3: .line 1530
            aload 1 /* points */
            iconst_0
            aaload
            areturn
         4: .line 1532
      StackMap locals:
      StackMap stack:
            aload 1 /* points */
            iconst_0
            aaload
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            invokestatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon.computeSquaredDistance:(Lorg/apache/lucene/spatial3d/geom/GeoPoint;Lorg/apache/lucene/spatial3d/geom/GeoPoint;)D
            dstore 2 /* p1dist */
        start local 2 // double p1dist
         5: .line 1533
            aload 1 /* points */
            iconst_1
            aaload
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            invokestatic org.apache.lucene.spatial3d.geom.GeoComplexPolygon.computeSquaredDistance:(Lorg/apache/lucene/spatial3d/geom/GeoPoint;Lorg/apache/lucene/spatial3d/geom/GeoPoint;)D
            dstore 4 /* p2dist */
        start local 4 // double p2dist
         6: .line 1534
            dload 2 /* p1dist */
            dload 4 /* p2dist */
            dcmpg
            ifge 8
         7: .line 1535
            aload 1 /* points */
            iconst_0
            aaload
            areturn
         8: .line 1536
      StackMap locals: double double
      StackMap stack:
            dload 4 /* p2dist */
            dload 2 /* p1dist */
            dcmpg
            ifge 10
         9: .line 1537
            aload 1 /* points */
            iconst_1
            aaload
            areturn
        10: .line 1539
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Neither off-plane intersection point matched intersection point; intersection = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.intersectionPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "; offplane choice 0: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* points */
            iconst_0
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "; offplane choice 1: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* points */
            iconst_1
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // double p2dist
        end local 2 // double p1dist
        end local 1 // org.apache.lucene.spatial3d.geom.GeoPoint[] points
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$DualCrossingEdgeIterator;
            0   11     1  points  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            5   11     2  p1dist  D
            6   11     4  p2dist  D
    MethodParameters:
        Name  Flags
      points  final

  public int getCrossingCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
         0: .line 1547
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.innerCrossingCount:I
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.outerCrossingCount:I
            invokestatic java.lang.Math.min:(II)I
            ireturn
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$DualCrossingEdgeIterator;

  public boolean isOnEdge();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
         0: .line 1552
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.onEdge:Z
            ireturn
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$DualCrossingEdgeIterator;

  public boolean matches(org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=4, args_size=2
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
        start local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge edge
         0: .line 1558
            aload 1 /* edge */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointX:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointY:D
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.thePointZ:D
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.isWithin:(DDD)Z
            ifeq 3
         1: .line 1559
            aload 0 /* this */
            iconst_1
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.onEdge:Z
         2: .line 1560
            iconst_0
            ireturn
         3: .line 1573
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.seenEdges:Ljava/util/Set;
            ifnull 5
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.seenEdges:Ljava/util/Set;
            aload 1 /* edge */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 1574
            iconst_1
            ireturn
         5: .line 1576
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.seenEdges:Ljava/util/Set;
            ifnonnull 7
         6: .line 1577
            aload 0 /* this */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.seenEdges:Ljava/util/Set;
         7: .line 1579
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.seenEdges:Ljava/util/Set;
            aload 1 /* edge */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         8: .line 1582
            aload 0 /* this */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.computeInsideOutside:()V
         9: .line 1607
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon.planetModel:Lorg/apache/lucene/spatial3d/geom/PlanetModel;
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.plane:Lorg/apache/lucene/spatial3d/geom/Plane;
            iconst_4
            anewarray org.apache.lucene.spatial3d.geom.Membership
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointOtherCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aastore
            dup
            iconst_2
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.startPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aastore
            dup
            iconst_3
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.endPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aastore
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.findIntersections:(Lorg/apache/lucene/spatial3d/geom/PlanetModel;Lorg/apache/lucene/spatial3d/geom/Plane;[Lorg/apache/lucene/spatial3d/geom/Membership;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 2 /* travelCrossings */
        start local 2 // org.apache.lucene.spatial3d.geom.GeoPoint[] travelCrossings
        10: .line 1608
            aload 2 /* travelCrossings */
            ifnull 16
            aload 2 /* travelCrossings */
            arraylength
            ifne 16
        11: .line 1610
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon.planetModel:Lorg/apache/lucene/spatial3d/geom/PlanetModel;
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.plane:Lorg/apache/lucene/spatial3d/geom/Plane;
            iconst_4
            anewarray org.apache.lucene.spatial3d.geom.Membership
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOtherCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aastore
            dup
            iconst_2
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.startPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aastore
            dup
            iconst_3
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.endPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aastore
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.findIntersections:(Lorg/apache/lucene/spatial3d/geom/PlanetModel;Lorg/apache/lucene/spatial3d/geom/Plane;[Lorg/apache/lucene/spatial3d/geom/Membership;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 3 /* testPointCrossings */
        start local 3 // org.apache.lucene.spatial3d.geom.GeoPoint[] testPointCrossings
        12: .line 1611
            aload 3 /* testPointCrossings */
            ifnull 16
            aload 3 /* testPointCrossings */
            arraylength
            ifne 16
        13: .line 1615
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.startPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.evaluateIsZero:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 16
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.endPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.evaluateIsZero:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 16
        14: .line 1616
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.startPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.evaluateIsZero:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 16
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.endPoint:Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.evaluateIsZero:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 16
        15: .line 1617
            iconst_1
            ireturn
        end local 3 // org.apache.lucene.spatial3d.geom.GeoPoint[] testPointCrossings
        16: .line 1647
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.innerCrossingCount:I
            aload 0 /* this */
            aload 1 /* edge */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.insideTravelCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointInsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.insideTestPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.countCrossings:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Membership;Lorg/apache/lucene/spatial3d/geom/Membership;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Membership;Lorg/apache/lucene/spatial3d/geom/Membership;)I
            iadd
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.innerCrossingCount:I
        17: .line 1649
            aload 0 /* this */
            dup
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.outerCrossingCount:I
            aload 0 /* this */
            aload 1 /* edge */
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.outsideTravelCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOutsidePlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.outsideTestPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.countCrossings:(Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Membership;Lorg/apache/lucene/spatial3d/geom/Membership;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Membership;Lorg/apache/lucene/spatial3d/geom/Membership;)I
            iadd
            putfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.outerCrossingCount:I
        18: .line 1657
            iconst_1
            ireturn
        end local 2 // org.apache.lucene.spatial3d.geom.GeoPoint[] travelCrossings
        end local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge edge
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   19     0                this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$DualCrossingEdgeIterator;
            0   19     1                edge  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;
           10   19     2     travelCrossings  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           12   16     3  testPointCrossings  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
    MethodParameters:
      Name  Flags
      edge  final

  private int countCrossings(org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge, org.apache.lucene.spatial3d.geom.Plane, org.apache.lucene.spatial3d.geom.Membership, org.apache.lucene.spatial3d.geom.Membership, org.apache.lucene.spatial3d.geom.Plane, org.apache.lucene.spatial3d.geom.Membership, org.apache.lucene.spatial3d.geom.Membership);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Membership;Lorg/apache/lucene/spatial3d/geom/Membership;Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/Membership;Lorg/apache/lucene/spatial3d/geom/Membership;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=20, args_size=8
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
        start local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge edge
        start local 2 // org.apache.lucene.spatial3d.geom.Plane travelEnvelopePlane
        start local 3 // org.apache.lucene.spatial3d.geom.Membership travelEnvelopeBound1
        start local 4 // org.apache.lucene.spatial3d.geom.Membership travelEnvelopeBound2
        start local 5 // org.apache.lucene.spatial3d.geom.Plane testPointEnvelopePlane
        start local 6 // org.apache.lucene.spatial3d.geom.Membership testPointEnvelopeBound1
        start local 7 // org.apache.lucene.spatial3d.geom.Membership testPointEnvelopeBound2
         0: .line 1666
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.plane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon.planetModel:Lorg/apache/lucene/spatial3d/geom/PlanetModel;
            aload 2 /* travelEnvelopePlane */
            iconst_2
            anewarray org.apache.lucene.spatial3d.geom.Membership
            dup
            iconst_0
            aload 3 /* travelEnvelopeBound1 */
            aastore
            dup
            iconst_1
            aload 4 /* travelEnvelopeBound2 */
            aastore
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.findIntersections:(Lorg/apache/lucene/spatial3d/geom/PlanetModel;Lorg/apache/lucene/spatial3d/geom/Plane;[Lorg/apache/lucene/spatial3d/geom/Membership;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 8 /* travelIntersections */
        start local 8 // org.apache.lucene.spatial3d.geom.GeoPoint[] travelIntersections
         1: .line 1667
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.plane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon.planetModel:Lorg/apache/lucene/spatial3d/geom/PlanetModel;
            aload 5 /* testPointEnvelopePlane */
            iconst_2
            anewarray org.apache.lucene.spatial3d.geom.Membership
            dup
            iconst_0
            aload 6 /* testPointEnvelopeBound1 */
            aastore
            dup
            iconst_1
            aload 7 /* testPointEnvelopeBound2 */
            aastore
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.findIntersections:(Lorg/apache/lucene/spatial3d/geom/PlanetModel;Lorg/apache/lucene/spatial3d/geom/Plane;[Lorg/apache/lucene/spatial3d/geom/Membership;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 9 /* testPointIntersections */
        start local 9 // org.apache.lucene.spatial3d.geom.GeoPoint[] testPointIntersections
         2: .line 1668
            iconst_0
            istore 10 /* crossings */
        start local 10 // int crossings
         3: .line 1669
            aload 8 /* travelIntersections */
            ifnull 23
         4: .line 1670
            aload 8 /* travelIntersections */
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 22
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int top int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
         5: aload 14
            iload 12
            aaload
            astore 11 /* intersection */
        start local 11 // org.apache.lucene.spatial3d.geom.GeoPoint intersection
         6: .line 1671
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.startPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 11 /* intersection */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.strictlyWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 21
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.endPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 11 /* intersection */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.strictlyWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 21
         7: .line 1673
            iconst_1
            istore 15 /* notDup */
        start local 15 // boolean notDup
         8: .line 1674
            aload 9 /* testPointIntersections */
            ifnull 16
         9: .line 1675
            aload 9 /* testPointIntersections */
            dup
            astore 19
            arraylength
            istore 18
            iconst_0
            istore 17
            goto 15
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int org.apache.lucene.spatial3d.geom.GeoPoint int int org.apache.lucene.spatial3d.geom.GeoPoint[] int top int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
        10: aload 19
            iload 17
            aaload
            astore 16 /* otherIntersection */
        start local 16 // org.apache.lucene.spatial3d.geom.GeoPoint otherIntersection
        11: .line 1676
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.startPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 16 /* otherIntersection */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.strictlyWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 14
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.endPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 16 /* otherIntersection */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.strictlyWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 14
            aload 11 /* intersection */
            aload 16 /* otherIntersection */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoPoint.isNumericallyIdentical:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 14
        12: .line 1678
            iconst_0
            istore 15 /* notDup */
        13: .line 1679
            goto 16
        end local 16 // org.apache.lucene.spatial3d.geom.GeoPoint otherIntersection
        14: .line 1675
      StackMap locals:
      StackMap stack:
            iinc 17 1
      StackMap locals:
      StackMap stack:
        15: iload 17
            iload 18
            if_icmplt 10
        16: .line 1683
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int org.apache.lucene.spatial3d.geom.GeoPoint int int org.apache.lucene.spatial3d.geom.GeoPoint[] int
      StackMap stack:
            iload 15 /* notDup */
            ifne 18
        17: .line 1684
            goto 21
        18: .line 1688
      StackMap locals:
      StackMap stack:
            iload 10 /* crossings */
            aload 0 /* this */
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.plane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 11 /* intersection */
            aload 2 /* travelEnvelopePlane */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.edgeCrossesEnvelope:(Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/GeoPoint;Lorg/apache/lucene/spatial3d/geom/Plane;)Z
            ifeq 19
            iconst_1
            goto 20
      StackMap locals:
      StackMap stack: int
        19: iconst_0
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int org.apache.lucene.spatial3d.geom.GeoPoint int int org.apache.lucene.spatial3d.geom.GeoPoint[] int
      StackMap stack: int int
        20: iadd
            istore 10 /* crossings */
        end local 15 // boolean notDup
        end local 11 // org.apache.lucene.spatial3d.geom.GeoPoint intersection
        21: .line 1670
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int top int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            iinc 12 1
      StackMap locals:
      StackMap stack:
        22: iload 12
            iload 13
            if_icmplt 5
        23: .line 1692
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int
      StackMap stack:
            aload 9 /* testPointIntersections */
            ifnull 32
        24: .line 1693
            aload 9 /* testPointIntersections */
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 31
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int top int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
        25: aload 14
            iload 12
            aaload
            astore 11 /* intersection */
        start local 11 // org.apache.lucene.spatial3d.geom.GeoPoint intersection
        26: .line 1694
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.startPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 11 /* intersection */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.strictlyWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 30
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.endPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 11 /* intersection */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.strictlyWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 30
        27: .line 1697
            iload 10 /* crossings */
            aload 0 /* this */
            aload 1 /* edge */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge.plane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 11 /* intersection */
            aload 5 /* testPointEnvelopePlane */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.edgeCrossesEnvelope:(Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/GeoPoint;Lorg/apache/lucene/spatial3d/geom/Plane;)Z
            ifeq 28
            iconst_1
            goto 29
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int org.apache.lucene.spatial3d.geom.GeoPoint int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack: int
        28: iconst_0
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int org.apache.lucene.spatial3d.geom.GeoPoint int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack: int int
        29: iadd
            istore 10 /* crossings */
        end local 11 // org.apache.lucene.spatial3d.geom.GeoPoint intersection
        30: .line 1693
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int top int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            iinc 12 1
      StackMap locals:
      StackMap stack:
        31: iload 12
            iload 13
            if_icmplt 25
        32: .line 1701
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.Membership org.apache.lucene.spatial3d.geom.GeoPoint[] org.apache.lucene.spatial3d.geom.GeoPoint[] int
      StackMap stack:
            iload 10 /* crossings */
            ireturn
        end local 10 // int crossings
        end local 9 // org.apache.lucene.spatial3d.geom.GeoPoint[] testPointIntersections
        end local 8 // org.apache.lucene.spatial3d.geom.GeoPoint[] travelIntersections
        end local 7 // org.apache.lucene.spatial3d.geom.Membership testPointEnvelopeBound2
        end local 6 // org.apache.lucene.spatial3d.geom.Membership testPointEnvelopeBound1
        end local 5 // org.apache.lucene.spatial3d.geom.Plane testPointEnvelopePlane
        end local 4 // org.apache.lucene.spatial3d.geom.Membership travelEnvelopeBound2
        end local 3 // org.apache.lucene.spatial3d.geom.Membership travelEnvelopeBound1
        end local 2 // org.apache.lucene.spatial3d.geom.Plane travelEnvelopePlane
        end local 1 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge edge
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   33     0                     this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$DualCrossingEdgeIterator;
            0   33     1                     edge  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$Edge;
            0   33     2      travelEnvelopePlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   33     3     travelEnvelopeBound1  Lorg/apache/lucene/spatial3d/geom/Membership;
            0   33     4     travelEnvelopeBound2  Lorg/apache/lucene/spatial3d/geom/Membership;
            0   33     5   testPointEnvelopePlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   33     6  testPointEnvelopeBound1  Lorg/apache/lucene/spatial3d/geom/Membership;
            0   33     7  testPointEnvelopeBound2  Lorg/apache/lucene/spatial3d/geom/Membership;
            1   33     8      travelIntersections  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            2   33     9   testPointIntersections  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            3   33    10                crossings  I
            6   21    11             intersection  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            8   21    15                   notDup  Z
           11   14    16        otherIntersection  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
           26   30    11             intersection  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
    MethodParameters:
                         Name  Flags
      edge                     final
      travelEnvelopePlane      final
      travelEnvelopeBound1     final
      travelEnvelopeBound2     final
      testPointEnvelopePlane   final
      testPointEnvelopeBound1  final
      testPointEnvelopeBound2  final

  private boolean edgeCrossesEnvelope(org.apache.lucene.spatial3d.geom.Plane, org.apache.lucene.spatial3d.geom.GeoPoint, org.apache.lucene.spatial3d.geom.Plane);
    descriptor: (Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/GeoPoint;Lorg/apache/lucene/spatial3d/geom/Plane;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=4
        start local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
        start local 1 // org.apache.lucene.spatial3d.geom.Plane edgePlane
        start local 2 // org.apache.lucene.spatial3d.geom.GeoPoint intersectionPoint
        start local 3 // org.apache.lucene.spatial3d.geom.Plane envelopePlane
         0: .line 1707
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.this$0:Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon;
            aload 1 /* edgePlane */
            aload 2 /* intersectionPoint */
            aload 3 /* envelopePlane */
            invokevirtual org.apache.lucene.spatial3d.geom.GeoComplexPolygon.findAdjoiningPoints:(Lorg/apache/lucene/spatial3d/geom/Plane;Lorg/apache/lucene/spatial3d/geom/GeoPoint;Lorg/apache/lucene/spatial3d/geom/Plane;)[Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            astore 4 /* adjoiningPoints */
        start local 4 // org.apache.lucene.spatial3d.geom.GeoPoint[] adjoiningPoints
         1: .line 1708
            aload 4 /* adjoiningPoints */
            ifnonnull 3
         2: .line 1710
            iconst_1
            ireturn
         3: .line 1712
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            iconst_0
            istore 5 /* withinCount */
        start local 5 // int withinCount
         4: .line 1713
            aload 4 /* adjoiningPoints */
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 10
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.GeoPoint org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.GeoPoint[] int top int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
         5: aload 9
            iload 7
            aaload
            astore 6 /* adjoining */
        start local 6 // org.apache.lucene.spatial3d.geom.GeoPoint adjoining
         6: .line 1714
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.travelPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 6 /* adjoining */
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.evaluateIsZero:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 7
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 6 /* adjoining */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 7
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.checkPointOtherCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 6 /* adjoining */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifne 8
         7: .line 1715
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.GeoPoint org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.GeoPoint[] int org.apache.lucene.spatial3d.geom.GeoPoint int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointPlane:Lorg/apache/lucene/spatial3d/geom/Plane;
            aload 6 /* adjoining */
            invokevirtual org.apache.lucene.spatial3d.geom.Plane.evaluateIsZero:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 9
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 6 /* adjoining */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 9
            aload 0 /* this */
            getfield org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator.testPointOtherCutoffPlane:Lorg/apache/lucene/spatial3d/geom/SidedPlane;
            aload 6 /* adjoining */
            invokevirtual org.apache.lucene.spatial3d.geom.SidedPlane.isWithin:(Lorg/apache/lucene/spatial3d/geom/Vector;)Z
            ifeq 9
         8: .line 1717
      StackMap locals:
      StackMap stack:
            iinc 5 /* withinCount */ 1
        end local 6 // org.apache.lucene.spatial3d.geom.GeoPoint adjoining
         9: .line 1713
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.GeoPoint org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.GeoPoint[] int top int int org.apache.lucene.spatial3d.geom.GeoPoint[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        10: iload 7
            iload 8
            if_icmplt 5
        11: .line 1722
            iload 5 /* withinCount */
            iconst_1
            iand
            ifeq 12
            iconst_1
            ireturn
      StackMap locals: org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.GeoPoint org.apache.lucene.spatial3d.geom.Plane org.apache.lucene.spatial3d.geom.GeoPoint[] int
      StackMap stack:
        12: iconst_0
            ireturn
        end local 5 // int withinCount
        end local 4 // org.apache.lucene.spatial3d.geom.GeoPoint[] adjoiningPoints
        end local 3 // org.apache.lucene.spatial3d.geom.Plane envelopePlane
        end local 2 // org.apache.lucene.spatial3d.geom.GeoPoint intersectionPoint
        end local 1 // org.apache.lucene.spatial3d.geom.Plane edgePlane
        end local 0 // org.apache.lucene.spatial3d.geom.GeoComplexPolygon$DualCrossingEdgeIterator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   13     0               this  Lorg/apache/lucene/spatial3d/geom/GeoComplexPolygon$DualCrossingEdgeIterator;
            0   13     1          edgePlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            0   13     2  intersectionPoint  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            0   13     3      envelopePlane  Lorg/apache/lucene/spatial3d/geom/Plane;
            1   13     4    adjoiningPoints  [Lorg/apache/lucene/spatial3d/geom/GeoPoint;
            4   13     5        withinCount  I
            6    9     6          adjoining  Lorg/apache/lucene/spatial3d/geom/GeoPoint;
    MethodParameters:
                   Name  Flags
      edgePlane          final
      intersectionPoint  final
      envelopePlane      final
}
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 Edge = org.apache.lucene.spatial3d.geom.GeoComplexPolygon$Edge of org.apache.lucene.spatial3d.geom.GeoComplexPolygon