public final class com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor extends com.oracle.truffle.regex.tregex.parser.ast.visitors.DepthFirstTraversalRegexASTVisitor
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor
  super_class: com.oracle.truffle.regex.tregex.parser.ast.visitors.DepthFirstTraversalRegexASTVisitor
{
  private final boolean extractLiteral;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean unrollGroups;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.regex.tregex.parser.ast.RegexAST ast;
    descriptor: Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final com.oracle.truffle.regex.tregex.string.AbstractStringBuffer literal;
    descriptor: Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.regex.tregex.string.AbstractStringBuffer mask;
    descriptor: Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.regex.result.PreCalculatedResultFactory result;
    descriptor: Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor groupUnroller;
    descriptor: Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
    flags: (0x0002) ACC_PRIVATE

  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 56
            ldc Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            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 com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(com.oracle.truffle.regex.tregex.parser.ast.RegexAST, boolean);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.RegexAST ast
        start local 2 // boolean extractLiteral
         0: .line 68
            aload 0 /* this */
            invokespecial com.oracle.truffle.regex.tregex.parser.ast.visitors.DepthFirstTraversalRegexASTVisitor.<init>:()V
         1: .line 62
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
         2: .line 69
            aload 0 /* this */
            aload 1 /* ast */
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.ast:Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;
         3: .line 70
            aload 0 /* this */
            new com.oracle.truffle.regex.result.PreCalculatedResultFactory
            dup
            aload 1 /* ast */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.RegexAST.getNumberOfCaptureGroups:()I
            invokespecial com.oracle.truffle.regex.result.PreCalculatedResultFactory.<init>:(I)V
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.result:Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
         4: .line 71
            aload 0 /* this */
            iload 2 /* extractLiteral */
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.extractLiteral:Z
         5: .line 72
            iload 2 /* extractLiteral */
            ifeq 11
         6: .line 73
            aload 0 /* this */
            aload 1 /* ast */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.RegexAST.getEncoding:()Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
            aload 1 /* ast */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.RegexAST.getRoot:()Lcom/oracle/truffle/regex/tregex/parser/ast/Group;
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.getMinPath:()I
            invokevirtual com.oracle.truffle.regex.tregex.string.Encodings$Encoding.createStringBuffer:(I)Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.literal:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
         7: .line 74
            aload 0 /* this */
            aload 1 /* ast */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.RegexAST.getProperties:()Lcom/oracle/truffle/regex/tregex/parser/RegexProperties;
            invokevirtual com.oracle.truffle.regex.tregex.parser.RegexProperties.hasCharClasses:()Z
            ifeq 8
            aload 1 /* ast */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.RegexAST.getEncoding:()Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
            aload 1 /* ast */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.RegexAST.getRoot:()Lcom/oracle/truffle/regex/tregex/parser/ast/Group;
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.getMinPath:()I
            invokevirtual com.oracle.truffle.regex.tregex.string.Encodings$Encoding.createStringBuffer:(I)Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            goto 9
      StackMap locals: com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor com.oracle.truffle.regex.tregex.parser.ast.RegexAST int
      StackMap stack: com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor
         8: aconst_null
      StackMap locals: com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor com.oracle.truffle.regex.tregex.parser.ast.RegexAST int
      StackMap stack: com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor com.oracle.truffle.regex.tregex.string.AbstractStringBuffer
         9: putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.mask:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
        10: .line 75
            goto 13
        11: .line 76
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.literal:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
        12: .line 77
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.mask:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
        13: .line 79
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.unrollGroups:Z
        14: .line 80
            return
        end local 2 // boolean extractLiteral
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.RegexAST ast
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   15     0            this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0   15     1             ast  Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;
            0   15     2  extractLiteral  Z
    MethodParameters:
                Name  Flags
      ast             
      extractLiteral  

  private void <init>(com.oracle.truffle.regex.tregex.parser.ast.RegexAST, boolean, boolean, int, com.oracle.truffle.regex.tregex.string.AbstractStringBuffer, com.oracle.truffle.regex.tregex.string.AbstractStringBuffer, com.oracle.truffle.regex.result.PreCalculatedResultFactory);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;ZZILcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=8, args_size=8
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.RegexAST ast
        start local 2 // boolean extractLiteral
        start local 3 // boolean unrollGroups
        start local 4 // int index
        start local 5 // com.oracle.truffle.regex.tregex.string.AbstractStringBuffer literal
        start local 6 // com.oracle.truffle.regex.tregex.string.AbstractStringBuffer mask
        start local 7 // com.oracle.truffle.regex.result.PreCalculatedResultFactory result
         0: .line 82
            aload 0 /* this */
            invokespecial com.oracle.truffle.regex.tregex.parser.ast.visitors.DepthFirstTraversalRegexASTVisitor.<init>:()V
         1: .line 62
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
         2: .line 83
            aload 0 /* this */
            aload 1 /* ast */
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.ast:Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;
         3: .line 84
            aload 0 /* this */
            iload 2 /* extractLiteral */
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.extractLiteral:Z
         4: .line 85
            aload 0 /* this */
            iload 3 /* unrollGroups */
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.unrollGroups:Z
         5: .line 86
            aload 0 /* this */
            iload 4 /* index */
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
         6: .line 87
            aload 0 /* this */
            aload 5 /* literal */
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.literal:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
         7: .line 88
            aload 0 /* this */
            aload 6 /* mask */
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.mask:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
         8: .line 89
            aload 0 /* this */
            aload 7 /* result */
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.result:Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
         9: .line 90
            return
        end local 7 // com.oracle.truffle.regex.result.PreCalculatedResultFactory result
        end local 6 // com.oracle.truffle.regex.tregex.string.AbstractStringBuffer mask
        end local 5 // com.oracle.truffle.regex.tregex.string.AbstractStringBuffer literal
        end local 4 // int index
        end local 3 // boolean unrollGroups
        end local 2 // boolean extractLiteral
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.RegexAST ast
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   10     0            this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0   10     1             ast  Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;
            0   10     2  extractLiteral  Z
            0   10     3    unrollGroups  Z
            0   10     4           index  I
            0   10     5         literal  Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            0   10     6            mask  Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            0   10     7          result  Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
    MethodParameters:
                Name  Flags
      ast             
      extractLiteral  
      unrollGroups    
      index           
      literal         
      mask            
      result          

  public static com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor run(com.oracle.truffle.regex.tregex.parser.ast.RegexAST, boolean);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;Z)Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.RegexAST ast
        start local 1 // boolean extractLiteral
         0: .line 93
            new com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor
            dup
            aload 0 /* ast */
            iload 1 /* extractLiteral */
            invokespecial com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.<init>:(Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;Z)V
            astore 2 /* visitor */
        start local 2 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor visitor
         1: .line 94
            aload 2 /* visitor */
            aload 0 /* ast */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.RegexAST.getRoot:()Lcom/oracle/truffle/regex/tregex/parser/ast/Group;
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.run:(Lcom/oracle/truffle/regex/tregex/parser/ast/RegexASTNode;)V
         2: .line 95
            aload 2 /* visitor */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.result:Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
            aload 2 /* visitor */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
            invokevirtual com.oracle.truffle.regex.result.PreCalculatedResultFactory.setLength:(I)V
         3: .line 96
            aload 2 /* visitor */
            areturn
        end local 2 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor visitor
        end local 1 // boolean extractLiteral
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.RegexAST ast
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0             ast  Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;
            0    4     1  extractLiteral  Z
            1    4     2         visitor  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
    MethodParameters:
                Name  Flags
      ast             
      extractLiteral  

  public static com.oracle.truffle.regex.result.PreCalculatedResultFactory createResultFactory(com.oracle.truffle.regex.tregex.parser.ast.RegexAST);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;)Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.RegexAST ast
         0: .line 100
            new com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor
            dup
            aload 0 /* ast */
            iconst_0
            invokespecial com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.<init>:(Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;Z)V
            astore 1 /* visitor */
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor visitor
         1: .line 101
            aload 1 /* visitor */
            aload 0 /* ast */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.RegexAST.getRoot:()Lcom/oracle/truffle/regex/tregex/parser/ast/Group;
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.run:(Lcom/oracle/truffle/regex/tregex/parser/ast/RegexASTNode;)V
         2: .line 102
            aload 1 /* visitor */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.result:Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
            aload 1 /* visitor */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
            invokevirtual com.oracle.truffle.regex.result.PreCalculatedResultFactory.setLength:(I)V
         3: .line 103
            aload 1 /* visitor */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.result:Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
            areturn
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor visitor
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.RegexAST ast
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0      ast  Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;
            1    4     1  visitor  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
    MethodParameters:
      Name  Flags
      ast   

  public com.oracle.truffle.regex.tregex.string.AbstractString getLiteral();
    descriptor: ()Lcom/oracle/truffle/regex/tregex/string/AbstractString;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
         0: .line 107
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.literal:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            invokeinterface com.oracle.truffle.regex.tregex.string.AbstractStringBuffer.materialize:()Lcom/oracle/truffle/regex/tregex/string/AbstractString;
            areturn
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;

  public boolean hasMask();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
         0: .line 111
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.mask:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;

  public com.oracle.truffle.regex.tregex.string.AbstractString getMask();
    descriptor: ()Lcom/oracle/truffle/regex/tregex/string/AbstractString;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
         0: .line 115
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.mask:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            ifnonnull 1
            aconst_null
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.mask:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            invokeinterface com.oracle.truffle.regex.tregex.string.AbstractStringBuffer.materialize:()Lcom/oracle/truffle/regex/tregex/string/AbstractString;
      StackMap locals:
      StackMap stack: com.oracle.truffle.regex.tregex.string.AbstractString
         2: areturn
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;

  public com.oracle.truffle.regex.result.PreCalculatedResultFactory getResultFactory();
    descriptor: ()Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
         0: .line 119
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.result:Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
            areturn
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;

  protected void visit(com.oracle.truffle.regex.tregex.parser.ast.BackReference);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/BackReference;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.BackReference backReference
         0: .line 124
            invokestatic com.oracle.truffle.regex.tregex.util.Exceptions.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.BackReference backReference
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0    1     1  backReference  Lcom/oracle/truffle/regex/tregex/parser/ast/BackReference;
    MethodParameters:
               Name  Flags
      backReference  

  protected void visit(com.oracle.truffle.regex.tregex.parser.ast.Group);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/Group;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.Group group
         0: .line 129
            aload 1 /* group */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.isCapturing:()Z
            ifeq 2
         1: .line 130
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.result:Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
            aload 1 /* group */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.getGroupNumber:()I
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
            invokevirtual com.oracle.truffle.regex.result.PreCalculatedResultFactory.setStart:(II)V
         2: .line 132
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.Group group
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0    3     1  group  Lcom/oracle/truffle/regex/tregex/parser/ast/Group;
    MethodParameters:
       Name  Flags
      group  

  protected void leave(com.oracle.truffle.regex.tregex.parser.ast.Group);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/Group;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=10, locals=3, args_size=2
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.Group group
         0: .line 136
            aload 1 /* group */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.isCapturing:()Z
            ifeq 2
         1: .line 137
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.result:Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
            aload 1 /* group */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.getGroupNumber:()I
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
            invokevirtual com.oracle.truffle.regex.result.PreCalculatedResultFactory.setEnd:(II)V
         2: .line 139
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.unrollGroups:Z
            ifeq 13
            aload 1 /* group */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.hasNotUnrolledQuantifier:()Z
            ifeq 13
         3: .line 140
            getstatic com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.$assertionsDisabled:Z
            ifne 4
            aload 1 /* group */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.getQuantifier:()Lcom/oracle/truffle/regex/tregex/parser/Token$Quantifier;
            invokevirtual com.oracle.truffle.regex.tregex.parser.Token$Quantifier.getMin:()I
            aload 1 /* group */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.getQuantifier:()Lcom/oracle/truffle/regex/tregex/parser/Token$Quantifier;
            invokevirtual com.oracle.truffle.regex.tregex.parser.Token$Quantifier.getMax:()I
            if_icmpeq 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.groupUnroller:Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            ifnonnull 6
         5: .line 142
            aload 0 /* this */
            new com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.ast:Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.extractLiteral:Z
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.literal:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.mask:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.result:Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;
            invokespecial com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.<init>:(Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;ZZILcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;Lcom/oracle/truffle/regex/result/PreCalculatedResultFactory;)V
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.groupUnroller:Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
         6: .line 144
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.groupUnroller:Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
         7: .line 145
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         8: goto 11
         9: .line 146
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.groupUnroller:Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            aload 1 /* group */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.run:(Lcom/oracle/truffle/regex/tregex/parser/ast/RegexASTNode;)V
        10: .line 145
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 2 /* i */
            aload 1 /* group */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.Group.getQuantifier:()Lcom/oracle/truffle/regex/tregex/parser/Token$Quantifier;
            invokevirtual com.oracle.truffle.regex.tregex.parser.Token$Quantifier.getMin:()I
            iconst_1
            isub
            if_icmplt 9
        end local 2 // int i
        12: .line 148
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.groupUnroller:Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
        13: .line 150
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.Group group
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   14     0   this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0   14     1  group  Lcom/oracle/truffle/regex/tregex/parser/ast/Group;
            8   12     2      i  I
    MethodParameters:
       Name  Flags
      group  

  protected void visit(com.oracle.truffle.regex.tregex.parser.ast.Sequence);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/Sequence;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.Sequence sequence
         0: .line 154
            return
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.Sequence sequence
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0    1     1  sequence  Lcom/oracle/truffle/regex/tregex/parser/ast/Sequence;
    MethodParameters:
          Name  Flags
      sequence  

  protected void visit(com.oracle.truffle.regex.tregex.parser.ast.PositionAssertion);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/PositionAssertion;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.PositionAssertion assertion
         0: .line 158
            return
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.PositionAssertion assertion
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0    1     1  assertion  Lcom/oracle/truffle/regex/tregex/parser/ast/PositionAssertion;
    MethodParameters:
           Name  Flags
      assertion  

  protected void visit(com.oracle.truffle.regex.tregex.parser.ast.LookBehindAssertion);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/LookBehindAssertion;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.LookBehindAssertion assertion
         0: .line 162
            invokestatic com.oracle.truffle.regex.tregex.util.Exceptions.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.LookBehindAssertion assertion
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0    1     1  assertion  Lcom/oracle/truffle/regex/tregex/parser/ast/LookBehindAssertion;
    MethodParameters:
           Name  Flags
      assertion  

  protected void visit(com.oracle.truffle.regex.tregex.parser.ast.LookAheadAssertion);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/LookAheadAssertion;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.LookAheadAssertion assertion
         0: .line 167
            invokestatic com.oracle.truffle.regex.tregex.util.Exceptions.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.LookAheadAssertion assertion
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0    1     1  assertion  Lcom/oracle/truffle/regex/tregex/parser/ast/LookAheadAssertion;
    MethodParameters:
           Name  Flags
      assertion  

  protected void visit(com.oracle.truffle.regex.tregex.parser.ast.CharacterClass);
    descriptor: (Lcom/oracle/truffle/regex/tregex/parser/ast/CharacterClass;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
        start local 1 // com.oracle.truffle.regex.tregex.parser.ast.CharacterClass characterClass
         0: .line 172
            getstatic com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.$assertionsDisabled:Z
            ifne 1
            aload 1 /* characterClass */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.CharacterClass.hasQuantifier:()Z
            ifeq 1
            aload 1 /* characterClass */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.CharacterClass.getQuantifier:()Lcom/oracle/truffle/regex/tregex/parser/Token$Quantifier;
            invokevirtual com.oracle.truffle.regex.tregex.parser.Token$Quantifier.getMin:()I
            aload 1 /* characterClass */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.CharacterClass.getQuantifier:()Lcom/oracle/truffle/regex/tregex/parser/Token$Quantifier;
            invokevirtual com.oracle.truffle.regex.tregex.parser.Token$Quantifier.getMax:()I
            if_icmpeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 173
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 11
         3: .line 174
      StackMap locals: int
      StackMap stack:
            aload 1 /* characterClass */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.CharacterClass.getCharSet:()Lcom/oracle/truffle/regex/charset/CodePointSet;
            invokevirtual com.oracle.truffle.regex.charset.CodePointSet.getMin:()I
            istore 3 /* cp */
        start local 3 // int cp
         4: .line 175
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.extractLiteral:Z
            ifeq 9
         5: .line 176
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.mask:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            ifnonnull 8
         6: .line 177
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.literal:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            iload 3 /* cp */
            invokeinterface com.oracle.truffle.regex.tregex.string.AbstractStringBuffer.append:(I)V
         7: .line 178
            goto 9
         8: .line 179
      StackMap locals: int
      StackMap stack:
            aload 1 /* characterClass */
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.literal:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.mask:Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.CharacterClass.extractSingleChar:(Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;Lcom/oracle/truffle/regex/tregex/string/AbstractStringBuffer;)V
         9: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
            aload 0 /* this */
            getfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.ast:Lcom/oracle/truffle/regex/tregex/parser/ast/RegexAST;
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.RegexAST.getEncoding:()Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
            iload 3 /* cp */
            invokevirtual com.oracle.truffle.regex.tregex.string.Encodings$Encoding.getEncodedSize:(I)I
            iadd
            putfield com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor.index:I
        end local 3 // int cp
        10: .line 173
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 2 /* i */
            aload 1 /* characterClass */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.CharacterClass.hasNotUnrolledQuantifier:()Z
            ifeq 12
            aload 1 /* characterClass */
            invokevirtual com.oracle.truffle.regex.tregex.parser.ast.CharacterClass.getQuantifier:()Lcom/oracle/truffle/regex/tregex/parser/Token$Quantifier;
            invokevirtual com.oracle.truffle.regex.tregex.parser.Token$Quantifier.getMin:()I
            goto 13
      StackMap locals:
      StackMap stack: int
        12: iconst_1
      StackMap locals: com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor com.oracle.truffle.regex.tregex.parser.ast.CharacterClass int
      StackMap stack: int int
        13: if_icmplt 3
        end local 2 // int i
        14: .line 184
            return
        end local 1 // com.oracle.truffle.regex.tregex.parser.ast.CharacterClass characterClass
        end local 0 // com.oracle.truffle.regex.tregex.parser.ast.visitors.PreCalcResultVisitor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   15     0            this  Lcom/oracle/truffle/regex/tregex/parser/ast/visitors/PreCalcResultVisitor;
            0   15     1  characterClass  Lcom/oracle/truffle/regex/tregex/parser/ast/CharacterClass;
            2   14     2               i  I
            4   10     3              cp  I
    MethodParameters:
                Name  Flags
      characterClass  
}
SourceFile: "PreCalcResultVisitor.java"
InnerClasses:
  public final Quantifier = com.oracle.truffle.regex.tregex.parser.Token$Quantifier of com.oracle.truffle.regex.tregex.parser.Token
  public abstract Encoding = com.oracle.truffle.regex.tregex.string.Encodings$Encoding of com.oracle.truffle.regex.tregex.string.Encodings