public abstract class org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory
  super_class: java.lang.Object
{
  private static final double DEFAULT_GEO_MAX_DETAIL_KM;
    descriptor: D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0.001

  public static final java.lang.String PREFIX_TREE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "prefixTree"

  public static final java.lang.String MAX_LEVELS;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "maxLevels"

  public static final java.lang.String MAX_DIST_ERR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "maxDistErr"

  protected java.util.Map<java.lang.String, java.lang.String> args;
    descriptor: Ljava/util/Map;
    flags: (0x0004) ACC_PROTECTED
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;

  protected org.locationtech.spatial4j.context.SpatialContext ctx;
    descriptor: Lorg/locationtech/spatial4j/context/SpatialContext;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.Integer maxLevels;
    descriptor: Ljava/lang/Integer;
    flags: (0x0004) ACC_PROTECTED

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory this
         0: .line 30
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTreeFactory;

  public static org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree makeSPT(java.util.Map<java.lang.String, java.lang.String>, java.lang.ClassLoader, org.locationtech.spatial4j.context.SpatialContext);
    descriptor: (Ljava/util/Map;Ljava/lang/ClassLoader;Lorg/locationtech/spatial4j/context/SpatialContext;)Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTree;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // java.util.Map args
        start local 1 // java.lang.ClassLoader classLoader
        start local 2 // org.locationtech.spatial4j.context.SpatialContext ctx
         0: .line 48
            aload 0 /* args */
            ldc "prefixTree"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* cname */
        start local 4 // java.lang.String cname
         1: .line 49
            aload 4 /* cname */
            ifnonnull 5
         2: .line 50
            aload 2 /* ctx */
            invokevirtual org.locationtech.spatial4j.context.SpatialContext.isGeo:()Z
            ifeq 3
            ldc "geohash"
            goto 4
      StackMap locals: java.util.Map java.lang.ClassLoader org.locationtech.spatial4j.context.SpatialContext top java.lang.String
      StackMap stack:
         3: ldc "quad"
      StackMap locals:
      StackMap stack: java.lang.String
         4: astore 4 /* cname */
         5: .line 51
      StackMap locals:
      StackMap stack:
            ldc "geohash"
            aload 4 /* cname */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 8
         6: .line 52
            new org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree$Factory
            dup
            invokespecial org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree$Factory.<init>:()V
            astore 3 /* instance */
        start local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
         7: goto 22
        end local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
         8: .line 53
      StackMap locals:
      StackMap stack:
            ldc "quad"
            aload 4 /* cname */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 11
         9: .line 54
            new org.apache.lucene.spatial.prefix.tree.QuadPrefixTree$Factory
            dup
            invokespecial org.apache.lucene.spatial.prefix.tree.QuadPrefixTree$Factory.<init>:()V
            astore 3 /* instance */
        start local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
        10: goto 22
        end local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
        11: .line 55
      StackMap locals:
      StackMap stack:
            ldc "packedQuad"
            aload 4 /* cname */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 14
        12: .line 56
            new org.apache.lucene.spatial.prefix.tree.PackedQuadPrefixTree$Factory
            dup
            invokespecial org.apache.lucene.spatial.prefix.tree.PackedQuadPrefixTree$Factory.<init>:()V
            astore 3 /* instance */
        start local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
        13: goto 22
        end local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
        14: .line 57
      StackMap locals:
      StackMap stack:
            ldc "s2"
            aload 4 /* cname */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 17
        15: .line 58
            new org.apache.lucene.spatial.prefix.tree.S2PrefixTree$Factory
            dup
            invokespecial org.apache.lucene.spatial.prefix.tree.S2PrefixTree$Factory.<init>:()V
            astore 3 /* instance */
        start local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
        16: goto 22
        end local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
        17: .line 61
      StackMap locals:
      StackMap stack:
            aload 1 /* classLoader */
            aload 4 /* cname */
            invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
            astore 5 /* c */
        start local 5 // java.lang.Class c
        18: .line 62
            aload 5 /* c */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory
            astore 3 /* instance */
        end local 5 // java.lang.Class c
        start local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
        19: .line 63
            goto 22
        end local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
      StackMap locals:
      StackMap stack: java.lang.Exception
        20: astore 5 /* e */
        start local 5 // java.lang.Exception e
        21: .line 64
            new java.lang.RuntimeException
            dup
            aload 5 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.Exception e
        start local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
        22: .line 67
      StackMap locals: java.util.Map java.lang.ClassLoader org.locationtech.spatial4j.context.SpatialContext org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory java.lang.String
      StackMap stack:
            aload 3 /* instance */
            aload 0 /* args */
            aload 2 /* ctx */
            invokevirtual org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.init:(Ljava/util/Map;Lorg/locationtech/spatial4j/context/SpatialContext;)V
        23: .line 68
            aload 3 /* instance */
            invokevirtual org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.newSPT:()Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTree;
            areturn
        end local 4 // java.lang.String cname
        end local 3 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory instance
        end local 2 // org.locationtech.spatial4j.context.SpatialContext ctx
        end local 1 // java.lang.ClassLoader classLoader
        end local 0 // java.util.Map args
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   24     0         args  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            0   24     1  classLoader  Ljava/lang/ClassLoader;
            0   24     2          ctx  Lorg/locationtech/spatial4j/context/SpatialContext;
            7    8     3     instance  Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTreeFactory;
           10   11     3     instance  Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTreeFactory;
           13   14     3     instance  Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTreeFactory;
           16   17     3     instance  Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTreeFactory;
           19   20     3     instance  Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTreeFactory;
           22   24     3     instance  Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTreeFactory;
            1   24     4        cname  Ljava/lang/String;
           18   19     5            c  Ljava/lang/Class<*>;
           21   22     5            e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          17    19      20  Class java.lang.Exception
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/lang/ClassLoader;Lorg/locationtech/spatial4j/context/SpatialContext;)Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTree;
    MethodParameters:
             Name  Flags
      args         
      classLoader  
      ctx          

  protected void init(java.util.Map<java.lang.String, java.lang.String>, org.locationtech.spatial4j.context.SpatialContext);
    descriptor: (Ljava/util/Map;Lorg/locationtech/spatial4j/context/SpatialContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory this
        start local 1 // java.util.Map args
        start local 2 // org.locationtech.spatial4j.context.SpatialContext ctx
         0: .line 72
            aload 0 /* this */
            aload 1 /* args */
            putfield org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.args:Ljava/util/Map;
         1: .line 73
            aload 0 /* this */
            aload 2 /* ctx */
            putfield org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.ctx:Lorg/locationtech/spatial4j/context/SpatialContext;
         2: .line 74
            aload 0 /* this */
            invokevirtual org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.initMaxLevels:()V
         3: .line 75
            return
        end local 2 // org.locationtech.spatial4j.context.SpatialContext ctx
        end local 1 // java.util.Map args
        end local 0 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTreeFactory;
            0    4     1  args  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            0    4     2   ctx  Lorg/locationtech/spatial4j/context/SpatialContext;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Lorg/locationtech/spatial4j/context/SpatialContext;)V
    MethodParameters:
      Name  Flags
      args  
      ctx   

  protected void initMaxLevels();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory this
         0: .line 78
            aload 0 /* this */
            getfield org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.args:Ljava/util/Map;
            ldc "maxLevels"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* mlStr */
        start local 1 // java.lang.String mlStr
         1: .line 79
            aload 1 /* mlStr */
            ifnull 4
         2: .line 80
            aload 0 /* this */
            aload 1 /* mlStr */
            invokestatic java.lang.Integer.valueOf:(Ljava/lang/String;)Ljava/lang/Integer;
            putfield org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.maxLevels:Ljava/lang/Integer;
         3: .line 81
            return
         4: .line 85
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.args:Ljava/util/Map;
            ldc "maxDistErr"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* maxDetailDistStr */
        start local 4 // java.lang.String maxDetailDistStr
         5: .line 86
            aload 4 /* maxDetailDistStr */
            ifnonnull 10
         6: .line 87
            aload 0 /* this */
            getfield org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.ctx:Lorg/locationtech/spatial4j/context/SpatialContext;
            invokevirtual org.locationtech.spatial4j.context.SpatialContext.isGeo:()Z
            ifne 8
         7: .line 88
            return
         8: .line 90
      StackMap locals: org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory java.lang.String top top java.lang.String
      StackMap stack:
            ldc 0.001
            ldc 6371.0087714
            invokestatic org.locationtech.spatial4j.distance.DistanceUtils.dist2Degrees:(DD)D
            dstore 2 /* degrees */
        start local 2 // double degrees
         9: .line 91
            goto 11
        end local 2 // double degrees
        10: .line 92
      StackMap locals:
      StackMap stack:
            aload 4 /* maxDetailDistStr */
            invokestatic java.lang.Double.parseDouble:(Ljava/lang/String;)D
            dstore 2 /* degrees */
        start local 2 // double degrees
        11: .line 94
      StackMap locals: org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory java.lang.String double java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            dload 2 /* degrees */
            invokevirtual org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.getLevelForDistance:(D)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            putfield org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory.maxLevels:Ljava/lang/Integer;
        12: .line 95
            return
        end local 4 // java.lang.String maxDetailDistStr
        end local 2 // double degrees
        end local 1 // java.lang.String mlStr
        end local 0 // org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0              this  Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTreeFactory;
            1   13     1             mlStr  Ljava/lang/String;
            9   10     2           degrees  D
           11   13     2           degrees  D
            5   13     4  maxDetailDistStr  Ljava/lang/String;

  protected abstract int getLevelForDistance(double);
    descriptor: (D)I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      degrees  

  protected abstract org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree newSPT();
    descriptor: ()Lorg/apache/lucene/spatial/prefix/tree/SpatialPrefixTree;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
}
SourceFile: "SpatialPrefixTreeFactory.java"
InnerClasses:
  public Factory = org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree$Factory of org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree
  public Factory = org.apache.lucene.spatial.prefix.tree.PackedQuadPrefixTree$Factory of org.apache.lucene.spatial.prefix.tree.PackedQuadPrefixTree
  public Factory = org.apache.lucene.spatial.prefix.tree.QuadPrefixTree$Factory of org.apache.lucene.spatial.prefix.tree.QuadPrefixTree
  protected Factory = org.apache.lucene.spatial.prefix.tree.S2PrefixTree$Factory of org.apache.lucene.spatial.prefix.tree.S2PrefixTree