public abstract class org.apache.commons.configuration.FileSystem
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.commons.configuration.FileSystem
  super_class: java.lang.Object
{
  private static final java.lang.String FILE_SYSTEM;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "org.apache.commons.configuration.filesystem"

  private static org.apache.commons.configuration.FileSystem fileSystem;
    descriptor: Lorg/apache/commons/configuration/FileSystem;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private org.apache.commons.logging.Log log;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.commons.configuration.FileOptionsProvider optionsProvider;
    descriptor: Lorg/apache/commons/configuration/FileOptionsProvider;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=0
         0: .line 81
            ldc "org.apache.commons.configuration.filesystem"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* fsClassName */
        start local 0 // java.lang.String fsClassName
         1: .line 82
            aload 0 /* fsClassName */
            ifnull 17
         2: .line 84
            ldc Lorg/apache/commons/configuration/FileSystem;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            astore 1 /* log */
        start local 1 // org.apache.commons.logging.Log log
         3: .line 88
            aload 0 /* fsClassName */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 2 /* clazz */
        start local 2 // java.lang.Class clazz
         4: .line 89
            ldc Lorg/apache/commons/configuration/FileSystem;
            aload 2 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 17
         5: .line 91
            aload 2 /* clazz */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast org.apache.commons.configuration.FileSystem
            putstatic org.apache.commons.configuration.FileSystem.fileSystem:Lorg/apache/commons/configuration/FileSystem;
         6: .line 92
            aload 1 /* log */
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 17
         7: .line 94
            aload 1 /* log */
            new java.lang.StringBuilder
            dup
            ldc "Using "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* fsClassName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        end local 2 // java.lang.Class clazz
         8: .line 97
            goto 17
         9: .line 98
      StackMap locals: java.lang.String org.apache.commons.logging.Log
      StackMap stack: java.lang.InstantiationException
            astore 2 /* ex */
        start local 2 // java.lang.InstantiationException ex
        10: .line 100
            aload 1 /* log */
            new java.lang.StringBuilder
            dup
            ldc "Unable to create "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* fsClassName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 2 // java.lang.InstantiationException ex
        11: goto 17
        12: .line 102
      StackMap locals:
      StackMap stack: java.lang.IllegalAccessException
            astore 2 /* ex */
        start local 2 // java.lang.IllegalAccessException ex
        13: .line 104
            aload 1 /* log */
            new java.lang.StringBuilder
            dup
            ldc "Unable to create "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* fsClassName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 2 // java.lang.IllegalAccessException ex
        14: goto 17
        15: .line 106
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 2 /* ex */
        start local 2 // java.lang.ClassNotFoundException ex
        16: .line 108
            aload 1 /* log */
            new java.lang.StringBuilder
            dup
            ldc "Unable to create "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* fsClassName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 2 // java.lang.ClassNotFoundException ex
        end local 1 // org.apache.commons.logging.Log log
        17: .line 112
      StackMap locals:
      StackMap stack:
            getstatic org.apache.commons.configuration.FileSystem.fileSystem:Lorg/apache/commons/configuration/FileSystem;
            ifnonnull 19
        18: .line 114
            new org.apache.commons.configuration.DefaultFileSystem
            dup
            invokespecial org.apache.commons.configuration.DefaultFileSystem.<init>:()V
            putstatic org.apache.commons.configuration.FileSystem.fileSystem:Lorg/apache/commons/configuration/FileSystem;
        end local 0 // java.lang.String fsClassName
        19: .line 116
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            1   19     0  fsClassName  Ljava/lang/String;
            3   17     1          log  Lorg/apache/commons/logging/Log;
            4    8     2        clazz  Ljava/lang/Class<*>;
           10   11     2           ex  Ljava/lang/InstantiationException;
           13   14     2           ex  Ljava/lang/IllegalAccessException;
           16   17     2           ex  Ljava/lang/ClassNotFoundException;
      Exception table:
        from    to  target  type
           3     8       9  Class java.lang.InstantiationException
           3     8      12  Class java.lang.IllegalAccessException
           3     8      15  Class java.lang.ClassNotFoundException

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.commons.configuration.FileSystem this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 52
            aload 0 /* this */
            aconst_null
            invokevirtual org.apache.commons.configuration.FileSystem.setLogger:(Lorg/apache/commons/logging/Log;)V
         2: .line 53
            return
        end local 0 // org.apache.commons.configuration.FileSystem this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/commons/configuration/FileSystem;

  public org.apache.commons.logging.Log getLogger();
    descriptor: ()Lorg/apache/commons/logging/Log;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.configuration.FileSystem this
         0: .line 62
            aload 0 /* this */
            getfield org.apache.commons.configuration.FileSystem.log:Lorg/apache/commons/logging/Log;
            areturn
        end local 0 // org.apache.commons.configuration.FileSystem this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/commons/configuration/FileSystem;

  public void setLogger(org.apache.commons.logging.Log);
    descriptor: (Lorg/apache/commons/logging/Log;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.commons.configuration.FileSystem this
        start local 1 // org.apache.commons.logging.Log log
         0: .line 76
            aload 0 /* this */
            aload 1 /* log */
            ifnull 1
            aload 1 /* log */
            goto 2
      StackMap locals:
      StackMap stack: org.apache.commons.configuration.FileSystem
         1: new org.apache.commons.logging.impl.NoOpLog
            dup
            invokespecial org.apache.commons.logging.impl.NoOpLog.<init>:()V
      StackMap locals: org.apache.commons.configuration.FileSystem org.apache.commons.logging.Log
      StackMap stack: org.apache.commons.configuration.FileSystem org.apache.commons.logging.Log
         2: putfield org.apache.commons.configuration.FileSystem.log:Lorg/apache/commons/logging/Log;
         3: .line 77
            return
        end local 1 // org.apache.commons.logging.Log log
        end local 0 // org.apache.commons.configuration.FileSystem this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/commons/configuration/FileSystem;
            0    4     1   log  Lorg/apache/commons/logging/Log;
    MethodParameters:
      Name  Flags
      log   

  public static void setDefaultFileSystem(org.apache.commons.configuration.FileSystem);
    descriptor: (Lorg/apache/commons/configuration/FileSystem;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.commons.configuration.FileSystem fs
         0: .line 125
            aload 0 /* fs */
            ifnonnull 2
         1: .line 127
            new java.lang.NullPointerException
            dup
            ldc "A FileSystem implementation is required"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* fs */
            putstatic org.apache.commons.configuration.FileSystem.fileSystem:Lorg/apache/commons/configuration/FileSystem;
         3: .line 130
            return
        end local 0 // org.apache.commons.configuration.FileSystem fs
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0    fs  Lorg/apache/commons/configuration/FileSystem;
    Exceptions:
      throws java.lang.NullPointerException
    MethodParameters:
      Name  Flags
      fs    

  public static void resetDefaultFileSystem();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 137
            new org.apache.commons.configuration.DefaultFileSystem
            dup
            invokespecial org.apache.commons.configuration.DefaultFileSystem.<init>:()V
            putstatic org.apache.commons.configuration.FileSystem.fileSystem:Lorg/apache/commons/configuration/FileSystem;
         1: .line 138
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static org.apache.commons.configuration.FileSystem getDefaultFileSystem();
    descriptor: ()Lorg/apache/commons/configuration/FileSystem;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 146
            getstatic org.apache.commons.configuration.FileSystem.fileSystem:Lorg/apache/commons/configuration/FileSystem;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void setFileOptionsProvider(org.apache.commons.configuration.FileOptionsProvider);
    descriptor: (Lorg/apache/commons/configuration/FileOptionsProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.commons.configuration.FileSystem this
        start local 1 // org.apache.commons.configuration.FileOptionsProvider provider
         0: .line 155
            aload 0 /* this */
            aload 1 /* provider */
            putfield org.apache.commons.configuration.FileSystem.optionsProvider:Lorg/apache/commons/configuration/FileOptionsProvider;
         1: .line 156
            return
        end local 1 // org.apache.commons.configuration.FileOptionsProvider provider
        end local 0 // org.apache.commons.configuration.FileSystem this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/apache/commons/configuration/FileSystem;
            0    2     1  provider  Lorg/apache/commons/configuration/FileOptionsProvider;
    MethodParameters:
          Name  Flags
      provider  

  public org.apache.commons.configuration.FileOptionsProvider getFileOptionsProvider();
    descriptor: ()Lorg/apache/commons/configuration/FileOptionsProvider;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.configuration.FileSystem this
         0: .line 160
            aload 0 /* this */
            getfield org.apache.commons.configuration.FileSystem.optionsProvider:Lorg/apache/commons/configuration/FileOptionsProvider;
            areturn
        end local 0 // org.apache.commons.configuration.FileSystem this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/commons/configuration/FileSystem;

  public abstract java.io.InputStream getInputStream(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/io/InputStream;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws org.apache.commons.configuration.ConfigurationException
    MethodParameters:
          Name  Flags
      basePath  
      fileName  

  public abstract java.io.InputStream getInputStream(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/io/InputStream;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws org.apache.commons.configuration.ConfigurationException
    MethodParameters:
      Name  Flags
      url   

  public abstract java.io.OutputStream getOutputStream(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/io/OutputStream;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws org.apache.commons.configuration.ConfigurationException
    MethodParameters:
      Name  Flags
      url   

  public abstract java.io.OutputStream getOutputStream(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/io/OutputStream;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws org.apache.commons.configuration.ConfigurationException
    MethodParameters:
      Name  Flags
      file  

  public abstract java.lang.String getPath(java.io.File, java.net.URL, java.lang.String, java.lang.String);
    descriptor: (Ljava/io/File;Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      file      
      url       
      basePath  
      fileName  

  public abstract java.lang.String getBasePath(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      path  

  public abstract java.lang.String getFileName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      path  

  public abstract java.net.URL locateFromURL(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/net/URL;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      basePath  
      fileName  

  public abstract java.net.URL getURL(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/net/URL;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.net.MalformedURLException
    MethodParameters:
          Name  Flags
      basePath  
      fileName  
}
SourceFile: "FileSystem.java"