class freemarker.core.ThreadInterruptionSupportTemplatePostProcessor extends freemarker.core.TemplatePostProcessor
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: freemarker.core.ThreadInterruptionSupportTemplatePostProcessor
  super_class: freemarker.core.TemplatePostProcessor
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.ThreadInterruptionSupportTemplatePostProcessor this
         0: .line 48
            aload 0 /* this */
            invokespecial freemarker.core.TemplatePostProcessor.<init>:()V
            return
        end local 0 // freemarker.core.ThreadInterruptionSupportTemplatePostProcessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/ThreadInterruptionSupportTemplatePostProcessor;

  public void postProcess(freemarker.template.Template);
    descriptor: (Lfreemarker/template/Template;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // freemarker.core.ThreadInterruptionSupportTemplatePostProcessor this
        start local 1 // freemarker.template.Template t
         0: .line 52
            aload 1 /* t */
            invokevirtual freemarker.template.Template.getRootTreeNode:()Lfreemarker/core/TemplateElement;
            astore 2 /* te */
        start local 2 // freemarker.core.TemplateElement te
         1: .line 53
            aload 0 /* this */
            aload 2 /* te */
            invokevirtual freemarker.core.ThreadInterruptionSupportTemplatePostProcessor.addInterruptionChecks:(Lfreemarker/core/TemplateElement;)V
         2: .line 54
            return
        end local 2 // freemarker.core.TemplateElement te
        end local 1 // freemarker.template.Template t
        end local 0 // freemarker.core.ThreadInterruptionSupportTemplatePostProcessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lfreemarker/core/ThreadInterruptionSupportTemplatePostProcessor;
            0    3     1     t  Lfreemarker/template/Template;
            1    3     2    te  Lfreemarker/core/TemplateElement;
    Exceptions:
      throws freemarker.core.TemplatePostProcessorException
    MethodParameters:
      Name  Flags
      t     

  private void addInterruptionChecks(freemarker.core.TemplateElement);
    descriptor: (Lfreemarker/core/TemplateElement;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // freemarker.core.ThreadInterruptionSupportTemplatePostProcessor this
        start local 1 // freemarker.core.TemplateElement te
         0: .line 57
            aload 1 /* te */
            ifnonnull 2
         1: .line 58
            return
         2: .line 61
      StackMap locals:
      StackMap stack:
            aload 1 /* te */
            invokevirtual freemarker.core.TemplateElement.getChildCount:()I
            istore 2 /* childCount */
        start local 2 // int childCount
         3: .line 62
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 7
         5: .line 63
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* te */
            iload 3 /* i */
            invokevirtual freemarker.core.TemplateElement.getChild:(I)Lfreemarker/core/TemplateElement;
            invokevirtual freemarker.core.ThreadInterruptionSupportTemplatePostProcessor.addInterruptionChecks:(Lfreemarker/core/TemplateElement;)V
         6: .line 62
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            iload 2 /* childCount */
            if_icmplt 5
        end local 3 // int i
         8: .line 66
            aload 1 /* te */
            invokevirtual freemarker.core.TemplateElement.isNestedBlockRepeater:()Z
            ifeq 13
         9: .line 68
            aload 1 /* te */
            iconst_0
            new freemarker.core.ThreadInterruptionSupportTemplatePostProcessor$ThreadInterruptionCheck
            dup
            aload 1 /* te */
            invokespecial freemarker.core.ThreadInterruptionSupportTemplatePostProcessor$ThreadInterruptionCheck.<init>:(Lfreemarker/core/TemplateElement;)V
            invokevirtual freemarker.core.TemplateElement.addChild:(ILfreemarker/core/TemplateElement;)V
        10: .line 69
            goto 13
      StackMap locals: freemarker.core.ThreadInterruptionSupportTemplatePostProcessor freemarker.core.TemplateElement int
      StackMap stack: freemarker.core.ParseException
        11: astore 3 /* e */
        start local 3 // freemarker.core.ParseException e
        12: .line 70
            new freemarker.core.TemplatePostProcessorException
            dup
            ldc "Unexpected error; see cause"
            aload 3 /* e */
            invokespecial freemarker.core.TemplatePostProcessorException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // freemarker.core.ParseException e
        13: .line 73
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int childCount
        end local 1 // freemarker.core.TemplateElement te
        end local 0 // freemarker.core.ThreadInterruptionSupportTemplatePostProcessor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Lfreemarker/core/ThreadInterruptionSupportTemplatePostProcessor;
            0   14     1          te  Lfreemarker/core/TemplateElement;
            3   14     2  childCount  I
            4    8     3           i  I
           12   13     3           e  Lfreemarker/core/ParseException;
      Exception table:
        from    to  target  type
           9    10      11  Class freemarker.core.ParseException
    Exceptions:
      throws freemarker.core.TemplatePostProcessorException
    MethodParameters:
      Name  Flags
      te    final
}
SourceFile: "ThreadInterruptionSupportTemplatePostProcessor.java"
NestMembers:
  freemarker.core.ThreadInterruptionSupportTemplatePostProcessor$TemplateProcessingThreadInterruptedException  freemarker.core.ThreadInterruptionSupportTemplatePostProcessor$ThreadInterruptionCheck
InnerClasses:
  TemplateProcessingThreadInterruptedException = freemarker.core.ThreadInterruptionSupportTemplatePostProcessor$TemplateProcessingThreadInterruptedException of freemarker.core.ThreadInterruptionSupportTemplatePostProcessor
  ThreadInterruptionCheck = freemarker.core.ThreadInterruptionSupportTemplatePostProcessor$ThreadInterruptionCheck of freemarker.core.ThreadInterruptionSupportTemplatePostProcessor