public abstract class freemarker.debug.impl.DebuggerService
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: freemarker.debug.impl.DebuggerService
  super_class: java.lang.Object
{
  private static final freemarker.debug.impl.DebuggerService instance;
    descriptor: Lfreemarker/debug/impl/DebuggerService;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 36
            invokestatic freemarker.debug.impl.DebuggerService.createInstance:()Lfreemarker/debug/impl/DebuggerService;
            putstatic freemarker.debug.impl.DebuggerService.instance:Lfreemarker/debug/impl/DebuggerService;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.debug.impl.DebuggerService this
         0: .line 35
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // freemarker.debug.impl.DebuggerService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/debug/impl/DebuggerService;

  private static freemarker.debug.impl.DebuggerService createInstance();
    descriptor: ()Lfreemarker/debug/impl/DebuggerService;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 43
            ldc "freemarker.debug.password"
            aconst_null
            invokestatic freemarker.template.utility.SecurityUtilities.getSystemProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            ifnonnull 2
         1: .line 44
            new freemarker.debug.impl.DebuggerService$NoOpDebuggerService
            dup
            invokespecial freemarker.debug.impl.DebuggerService$NoOpDebuggerService.<init>:()V
            goto 3
         2: .line 45
      StackMap locals:
      StackMap stack:
            new freemarker.debug.impl.RmiDebuggerService
            dup
            invokespecial freemarker.debug.impl.RmiDebuggerService.<init>:()V
         3: .line 42
      StackMap locals:
      StackMap stack: freemarker.debug.impl.DebuggerService
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.util.List getBreakpoints(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String templateName
         0: .line 49
            getstatic freemarker.debug.impl.DebuggerService.instance:Lfreemarker/debug/impl/DebuggerService;
            aload 0 /* templateName */
            invokevirtual freemarker.debug.impl.DebuggerService.getBreakpointsSpi:(Ljava/lang/String;)Ljava/util/List;
            areturn
        end local 0 // java.lang.String templateName
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0  templateName  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      templateName  

  abstract java.util.List getBreakpointsSpi(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
              Name  Flags
      templateName  

  public static void registerTemplate(freemarker.template.Template);
    descriptor: (Lfreemarker/template/Template;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // freemarker.template.Template template
         0: .line 55
            getstatic freemarker.debug.impl.DebuggerService.instance:Lfreemarker/debug/impl/DebuggerService;
            aload 0 /* template */
            invokevirtual freemarker.debug.impl.DebuggerService.registerTemplateSpi:(Lfreemarker/template/Template;)V
         1: .line 56
            return
        end local 0 // freemarker.template.Template template
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0  template  Lfreemarker/template/Template;
    MethodParameters:
          Name  Flags
      template  

  abstract void registerTemplateSpi(freemarker.template.Template);
    descriptor: (Lfreemarker/template/Template;)V
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      template  

  public static boolean suspendEnvironment(freemarker.core.Environment, java.lang.String, int);
    descriptor: (Lfreemarker/core/Environment;Ljava/lang/String;I)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // freemarker.core.Environment env
        start local 1 // java.lang.String templateName
        start local 2 // int line
         0: .line 62
            getstatic freemarker.debug.impl.DebuggerService.instance:Lfreemarker/debug/impl/DebuggerService;
            aload 0 /* env */
            aload 1 /* templateName */
            iload 2 /* line */
            invokevirtual freemarker.debug.impl.DebuggerService.suspendEnvironmentSpi:(Lfreemarker/core/Environment;Ljava/lang/String;I)Z
            ireturn
        end local 2 // int line
        end local 1 // java.lang.String templateName
        end local 0 // freemarker.core.Environment env
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0           env  Lfreemarker/core/Environment;
            0    1     1  templateName  Ljava/lang/String;
            0    1     2          line  I
    Exceptions:
      throws java.rmi.RemoteException
    MethodParameters:
              Name  Flags
      env           
      templateName  
      line          

  abstract boolean suspendEnvironmentSpi(freemarker.core.Environment, java.lang.String, int);
    descriptor: (Lfreemarker/core/Environment;Ljava/lang/String;I)Z
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws java.rmi.RemoteException
    MethodParameters:
              Name  Flags
      env           
      templateName  
      line          

  abstract void shutdownSpi();
    descriptor: ()V
    flags: (0x0400) ACC_ABSTRACT

  public static void shutdown();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 71
            getstatic freemarker.debug.impl.DebuggerService.instance:Lfreemarker/debug/impl/DebuggerService;
            invokevirtual freemarker.debug.impl.DebuggerService.shutdownSpi:()V
         1: .line 72
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "DebuggerService.java"
NestMembers:
  freemarker.debug.impl.DebuggerService$NoOpDebuggerService
InnerClasses:
  private NoOpDebuggerService = freemarker.debug.impl.DebuggerService$NoOpDebuggerService of freemarker.debug.impl.DebuggerService