public final class org.apache.fop.cli.Main
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.fop.cli.Main
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.fop.cli.Main this
         0: .line 42
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            return
        end local 0 // org.apache.fop.cli.Main this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/fop/cli/Main;

  public static java.net.URL[] getJARList();
    descriptor: ()[Ljava/net/URL;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=13, args_size=0
         0: .line 51
            ldc "fop.home"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* fopHome */
        start local 0 // java.lang.String fopHome
         1: .line 53
            aload 0 /* fopHome */
            ifnull 4
         2: .line 54
            new java.io.File
            dup
            aload 0 /* fopHome */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
            astore 1 /* baseDir */
        start local 1 // java.io.File baseDir
         3: .line 55
            goto 5
        end local 1 // java.io.File baseDir
         4: .line 56
      StackMap locals: java.lang.String
      StackMap stack:
            new java.io.File
            dup
            ldc "."
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            astore 1 /* baseDir */
        start local 1 // java.io.File baseDir
         5: .line 59
      StackMap locals: java.io.File
      StackMap stack:
            ldc "build"
            aload 1 /* baseDir */
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         6: .line 60
            aload 1 /* baseDir */
            astore 2 /* buildDir */
        start local 2 // java.io.File buildDir
         7: .line 61
            aload 1 /* baseDir */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            astore 1 /* baseDir */
         8: .line 62
            goto 10
        end local 2 // java.io.File buildDir
         9: .line 63
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 1 /* baseDir */
            ldc "build"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 2 /* buildDir */
        start local 2 // java.io.File buildDir
        10: .line 65
      StackMap locals: java.io.File
      StackMap stack:
            new java.io.File
            dup
            aload 2 /* buildDir */
            ldc "fop.jar"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 3 /* fopJar */
        start local 3 // java.io.File fopJar
        11: .line 66
            aload 3 /* fopJar */
            invokevirtual java.io.File.exists:()Z
            ifne 13
        12: .line 67
            new java.io.File
            dup
            aload 1 /* baseDir */
            ldc "fop.jar"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 3 /* fopJar */
        13: .line 69
      StackMap locals: java.io.File
      StackMap stack:
            aload 3 /* fopJar */
            invokevirtual java.io.File.exists:()Z
            ifne 17
        14: .line 70
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "fop.jar not found in directory: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        15: .line 71
            aload 1 /* baseDir */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " (or below)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 70
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 73
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* jars */
        start local 4 // java.util.List jars
        18: .line 74
            aload 4 /* jars */
            aload 3 /* fopJar */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        19: .line 76
            new org.apache.fop.cli.Main$1
            dup
            invokespecial org.apache.fop.cli.Main$1.<init>:()V
            astore 6 /* filter */
        start local 6 // java.io.FileFilter filter
        20: .line 81
            new java.io.File
            dup
            aload 1 /* baseDir */
            ldc "lib"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 7 /* libDir */
        start local 7 // java.io.File libDir
        21: .line 82
            aload 7 /* libDir */
            invokevirtual java.io.File.exists:()Z
            ifne 23
        22: .line 83
            aload 1 /* baseDir */
            astore 7 /* libDir */
        23: .line 85
      StackMap locals: java.lang.String java.io.File java.io.File java.io.File java.util.List top java.io.FileFilter java.io.File
      StackMap stack:
            aload 7 /* libDir */
            aload 6 /* filter */
            invokevirtual java.io.File.listFiles:(Ljava/io/FileFilter;)[Ljava/io/File;
            astore 5 /* files */
        start local 5 // java.io.File[] files
        24: .line 86
            aload 5 /* files */
            ifnull 30
        25: .line 87
            aload 5 /* files */
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 29
      StackMap locals: java.lang.String java.io.File java.io.File java.io.File java.util.List java.io.File[] java.io.FileFilter java.io.File top int int java.io.File[]
      StackMap stack:
        26: aload 11
            iload 9
            aaload
            astore 8 /* file */
        start local 8 // java.io.File file
        27: .line 88
            aload 4 /* jars */
            aload 8 /* file */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // java.io.File file
        28: .line 87
            iinc 9 1
      StackMap locals:
      StackMap stack:
        29: iload 9
            iload 10
            if_icmplt 26
        30: .line 91
      StackMap locals: java.lang.String java.io.File java.io.File java.io.File java.util.List java.io.File[] java.io.FileFilter java.io.File
      StackMap stack:
            ldc "fop.optional.lib"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* optionalLib */
        start local 8 // java.lang.String optionalLib
        31: .line 92
            aload 8 /* optionalLib */
            ifnull 39
        32: .line 93
            new java.io.File
            dup
            aload 8 /* optionalLib */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            aload 6 /* filter */
            invokevirtual java.io.File.listFiles:(Ljava/io/FileFilter;)[Ljava/io/File;
            astore 5 /* files */
        33: .line 94
            aload 5 /* files */
            ifnull 39
        34: .line 95
            aload 5 /* files */
            dup
            astore 12
            arraylength
            istore 11
            iconst_0
            istore 10
            goto 38
      StackMap locals: java.lang.String java.io.File java.io.File java.io.File java.util.List java.io.File[] java.io.FileFilter java.io.File java.lang.String top int int java.io.File[]
      StackMap stack:
        35: aload 12
            iload 10
            aaload
            astore 9 /* file */
        start local 9 // java.io.File file
        36: .line 96
            aload 4 /* jars */
            aload 9 /* file */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // java.io.File file
        37: .line 95
            iinc 10 1
      StackMap locals:
      StackMap stack:
        38: iload 10
            iload 11
            if_icmplt 35
        39: .line 100
      StackMap locals: java.lang.String java.io.File java.io.File java.io.File java.util.List java.io.File[] java.io.FileFilter java.io.File java.lang.String
      StackMap stack:
            aload 4 /* jars */
            aload 4 /* jars */
            invokeinterface java.util.List.size:()I
            anewarray java.net.URL
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.net.URL[]
            astore 9 /* urls */
        start local 9 // java.net.URL[] urls
        40: .line 105
            aload 9 /* urls */
            areturn
        end local 9 // java.net.URL[] urls
        end local 8 // java.lang.String optionalLib
        end local 7 // java.io.File libDir
        end local 6 // java.io.FileFilter filter
        end local 5 // java.io.File[] files
        end local 4 // java.util.List jars
        end local 3 // java.io.File fopJar
        end local 2 // java.io.File buildDir
        end local 1 // java.io.File baseDir
        end local 0 // java.lang.String fopHome
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            1   41     0      fopHome  Ljava/lang/String;
            3    4     1      baseDir  Ljava/io/File;
            5   41     1      baseDir  Ljava/io/File;
            7    9     2     buildDir  Ljava/io/File;
           10   41     2     buildDir  Ljava/io/File;
           11   41     3       fopJar  Ljava/io/File;
           18   41     4         jars  Ljava/util/List;
           24   41     5        files  [Ljava/io/File;
           20   41     6       filter  Ljava/io/FileFilter;
           21   41     7       libDir  Ljava/io/File;
           27   28     8         file  Ljava/io/File;
           31   41     8  optionalLib  Ljava/lang/String;
           36   37     9         file  Ljava/io/File;
           40   41     9         urls  [Ljava/net/URL;
    Exceptions:
      throws java.net.MalformedURLException

  public static boolean checkDependencies();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 114
            ldc "org.apache.commons.io.IOUtils"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 0 /* clazz */
        start local 0 // java.lang.Class clazz
         1: .line 115
            aload 0 /* clazz */
            ifnull 3
         2: .line 116
            ldc "org.apache.avalon.framework.configuration.Configuration"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 0 /* clazz */
         3: .line 118
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 0 /* clazz */
            ifnull 4
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
         5: ireturn
        end local 0 // java.lang.Class clazz
         6: .line 119
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         7: .line 120
            iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            1    6     0  clazz  Ljava/lang/Class;
      Exception table:
        from    to  target  type
           0     5       6  Class java.lang.Exception

  public static void startFOPWithDynamicClasspath(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 130
            invokestatic org.apache.fop.cli.Main.getJARList:()[Ljava/net/URL;
            astore 1 /* urls */
        start local 1 // java.net.URL[] urls
         1: .line 134
            new org.apache.fop.cli.Main$2
            dup
            aload 1 /* urls */
            invokespecial org.apache.fop.cli.Main$2.<init>:([Ljava/net/URL;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.ClassLoader
         2: .line 133
            astore 2 /* loader */
        start local 2 // java.lang.ClassLoader loader
         3: .line 139
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 2 /* loader */
            invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
         4: .line 140
            ldc "org.apache.fop.cli.Main"
            iconst_1
            aload 2 /* loader */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 3 /* clazz */
        start local 3 // java.lang.Class clazz
         5: .line 142
            aload 3 /* clazz */
            ldc "startFOP"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc [Ljava/lang/String;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 4 /* mainMethod */
        start local 4 // java.lang.reflect.Method mainMethod
         6: .line 143
            aload 4 /* mainMethod */
            aconst_null
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* args */
            aastore
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // java.lang.reflect.Method mainMethod
        end local 3 // java.lang.Class clazz
        end local 2 // java.lang.ClassLoader loader
        end local 1 // java.net.URL[] urls
         7: .line 144
            goto 12
      StackMap locals:
      StackMap stack: java.lang.Exception
         8: astore 1 /* e */
        start local 1 // java.lang.Exception e
         9: .line 145
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Unable to start FOP:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        10: .line 146
            aload 1 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        11: .line 148
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 1 // java.lang.Exception e
        12: .line 150
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        args  [Ljava/lang/String;
            1    7     1        urls  [Ljava/net/URL;
            3    7     2      loader  Ljava/lang/ClassLoader;
            5    7     3       clazz  Ljava/lang/Class;
            6    7     4  mainMethod  Ljava/lang/reflect/Method;
            9   12     1           e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     7       8  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      args  

  public static void startFOP(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 163
            aconst_null
            astore 1 /* options */
        start local 1 // org.apache.fop.cli.CommandLineOptions options
         1: .line 164
            aconst_null
            astore 2 /* foUserAgent */
        start local 2 // org.apache.fop.apps.FOUserAgent foUserAgent
         2: .line 165
            aconst_null
            astore 3 /* out */
        start local 3 // java.io.OutputStream out
         3: .line 168
            new org.apache.fop.cli.CommandLineOptions
            dup
            invokespecial org.apache.fop.cli.CommandLineOptions.<init>:()V
            astore 1 /* options */
         4: .line 169
            aload 1 /* options */
            aload 0 /* args */
            invokevirtual org.apache.fop.cli.CommandLineOptions.parse:([Ljava/lang/String;)Z
            ifne 6
         5: .line 171
            iconst_0
            invokestatic java.lang.System.exit:(I)V
         6: .line 174
      StackMap locals: org.apache.fop.cli.CommandLineOptions org.apache.fop.apps.FOUserAgent java.io.OutputStream
      StackMap stack:
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getFOUserAgent:()Lorg/apache/fop/apps/FOUserAgent;
            astore 2 /* foUserAgent */
         7: .line 175
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getOutputFormat:()Ljava/lang/String;
            astore 4 /* outputFormat */
        start local 4 // java.lang.String outputFormat
         8: .line 178
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getOutputFile:()Ljava/io/File;
            ifnull 14
         9: .line 179
            new java.io.BufferedOutputStream
            dup
        10: .line 180
            new java.io.FileOutputStream
            dup
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getOutputFile:()Ljava/io/File;
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
        11: .line 179
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 3 /* out */
        12: .line 181
            aload 2 /* foUserAgent */
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getOutputFile:()Ljava/io/File;
            invokevirtual org.apache.fop.apps.FOUserAgent.setOutputFile:(Ljava/io/File;)V
        13: .line 182
            goto 16
      StackMap locals: java.lang.String
      StackMap stack:
        14: aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.isOutputToStdOut:()Z
            ifeq 16
        15: .line 183
            new java.io.BufferedOutputStream
            dup
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 3 /* out */
        16: .line 185
      StackMap locals:
      StackMap stack:
            ldc "text/xsl"
            aload 4 /* outputFormat */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 19
        17: .line 186
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getInputHandler:()Lorg/apache/fop/cli/InputHandler;
            aload 2 /* foUserAgent */
            aload 4 /* outputFormat */
            aload 3 /* out */
            invokevirtual org.apache.fop.cli.InputHandler.renderTo:(Lorg/apache/fop/apps/FOUserAgent;Ljava/lang/String;Ljava/io/OutputStream;)V
        18: .line 187
            goto 24
        19: .line 188
      StackMap locals:
      StackMap stack:
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getInputHandler:()Lorg/apache/fop/cli/InputHandler;
            aload 3 /* out */
            invokevirtual org.apache.fop.cli.InputHandler.transformTo:(Ljava/io/OutputStream;)V
        20: .line 190
            goto 24
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: astore 5
        22: .line 191
            aload 3 /* out */
            invokestatic org.apache.commons.io.IOUtils.closeQuietly:(Ljava/io/OutputStream;)V
        23: .line 192
            aload 5
            athrow
        24: .line 191
      StackMap locals:
      StackMap stack:
            aload 3 /* out */
            invokestatic org.apache.commons.io.IOUtils.closeQuietly:(Ljava/io/OutputStream;)V
        25: .line 197
            ldc "application/X-fop-awt-preview"
            aload 4 /* outputFormat */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 34
        26: .line 198
            iconst_0
            invokestatic java.lang.System.exit:(I)V
        end local 4 // java.lang.String outputFormat
        27: .line 200
            goto 34
      StackMap locals: java.lang.String[] org.apache.fop.cli.CommandLineOptions org.apache.fop.apps.FOUserAgent java.io.OutputStream
      StackMap stack: java.lang.Exception
        28: astore 4 /* e */
        start local 4 // java.lang.Exception e
        29: .line 201
            aload 1 /* options */
            ifnull 33
        30: .line 202
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getLogger:()Lorg/apache/commons/logging/Log;
            ldc "Exception"
            aload 4 /* e */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        31: .line 203
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getOutputFile:()Ljava/io/File;
            ifnull 33
        32: .line 204
            aload 1 /* options */
            invokevirtual org.apache.fop.cli.CommandLineOptions.getOutputFile:()Ljava/io/File;
            invokevirtual java.io.File.delete:()Z
            pop
        33: .line 207
      StackMap locals: java.lang.Exception
      StackMap stack:
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        end local 4 // java.lang.Exception e
        34: .line 209
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.io.OutputStream out
        end local 2 // org.apache.fop.apps.FOUserAgent foUserAgent
        end local 1 // org.apache.fop.cli.CommandLineOptions options
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   35     0          args  [Ljava/lang/String;
            1   35     1       options  Lorg/apache/fop/cli/CommandLineOptions;
            2   35     2   foUserAgent  Lorg/apache/fop/apps/FOUserAgent;
            3   35     3           out  Ljava/io/OutputStream;
            8   27     4  outputFormat  Ljava/lang/String;
           29   34     4             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           8    21      21  any
           3    27      28  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      args  

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 216
            invokestatic org.apache.fop.cli.Main.checkDependencies:()Z
            ifeq 3
         1: .line 217
            aload 0 /* args */
            invokestatic org.apache.fop.cli.Main.startFOP:([Ljava/lang/String;)V
         2: .line 218
            goto 4
         3: .line 219
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            invokestatic org.apache.fop.cli.Main.startFOPWithDynamicClasspath:([Ljava/lang/String;)V
         4: .line 221
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  args  [Ljava/lang/String;
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "Main.java"
NestMembers:
  org.apache.fop.cli.Main$1  org.apache.fop.cli.Main$2
InnerClasses:
  org.apache.fop.cli.Main$1
  org.apache.fop.cli.Main$2