public abstract class org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory<C extends org.apache.commons.net.ftp.FTPClient, B extends org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory
  super_class: java.lang.Object
{
  private static final char[] ANON_CHAR_ARRAY;
    descriptor: [C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int BUFSZ;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 40

  private final org.apache.commons.logging.Log log;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected B builder;
    descriptor: Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
    flags: (0x0004) ACC_PROTECTED
    Signature: TB;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 89
            ldc "anonymous"
            invokevirtual java.lang.String.toCharArray:()[C
            putstatic org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.ANON_CHAR_ARRAY:[C
         1: .line 90
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>();
    descriptor: (Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory this
        start local 1 // org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder builder
         0: .line 95
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 91
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.log:Lorg/apache/commons/logging/Log;
         2: .line 96
            aload 0 /* this */
            aload 1 /* builder */
            putfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
         3: .line 97
            return
        end local 1 // org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder builder
        end local 0 // org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/apache/commons/vfs2/provider/ftp/FtpClientFactory$ConnectionFactory<TC;TB;>;
            0    4     1  builder  TB;
    Signature: (TB;)V
    MethodParameters:
         Name  Flags
      builder  final

  public C createConnection(java.lang.String, int, char[], char[], java.lang.String, org.apache.commons.vfs2.FileSystemOptions);
    descriptor: (Ljava/lang/String;I[C[CLjava/lang/String;Lorg/apache/commons/vfs2/FileSystemOptions;)Lorg/apache/commons/net/ftp/FTPClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=20, args_size=7
        start local 0 // org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory this
        start local 1 // java.lang.String hostname
        start local 2 // int port
        start local 3 // char[] username
        start local 4 // char[] password
        start local 5 // java.lang.String workingDirectory
        start local 6 // org.apache.commons.vfs2.FileSystemOptions fileSystemOptions
         0: .line 102
            aload 3 /* username */
            ifnonnull 2
         1: .line 103
            getstatic org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.ANON_CHAR_ARRAY:[C
            astore 3 /* username */
         2: .line 106
      StackMap locals:
      StackMap stack:
            aload 4 /* password */
            ifnonnull 4
         3: .line 107
            getstatic org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.ANON_CHAR_ARRAY:[C
            astore 4 /* password */
         4: .line 111
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.createClient:(Lorg/apache/commons/vfs2/FileSystemOptions;)Lorg/apache/commons/net/ftp/FTPClient;
            astore 7 /* client */
        start local 7 // org.apache.commons.net.ftp.FTPClient client
         5: .line 113
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.log:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 8
         6: .line 114
            new org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory$1
            dup
            aload 0 /* this */
            sipush 1024
            invokespecial org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory$1.<init>:(Lorg/apache/commons/vfs2/provider/ftp/FtpClientFactory$ConnectionFactory;I)V
            astore 8 /* writer */
        start local 8 // java.io.Writer writer
         7: .line 126
            aload 7 /* client */
            new org.apache.commons.net.PrintCommandListener
            dup
            new java.io.PrintWriter
            dup
            aload 8 /* writer */
            invokespecial java.io.PrintWriter.<init>:(Ljava/io/Writer;)V
            invokespecial org.apache.commons.net.PrintCommandListener.<init>:(Ljava/io/PrintWriter;)V
            invokevirtual org.apache.commons.net.ftp.FTPClient.addProtocolCommandListener:(Lorg/apache/commons/net/ProtocolCommandListener;)V
        end local 8 // java.io.Writer writer
         8: .line 129
      StackMap locals: org.apache.commons.net.ftp.FTPClient
      StackMap stack:
            aload 0 /* this */
            aload 6 /* fileSystemOptions */
            aload 7 /* client */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.configureClient:(Lorg/apache/commons/vfs2/FileSystemOptions;Lorg/apache/commons/net/ftp/FTPClient;)V
         9: .line 131
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getEntryParserFactory:(Lorg/apache/commons/vfs2/FileSystemOptions;)Lorg/apache/commons/net/ftp/parser/FTPFileEntryParserFactory;
            astore 8 /* myFactory */
        start local 8 // org.apache.commons.net.ftp.parser.FTPFileEntryParserFactory myFactory
        10: .line 132
            aload 8 /* myFactory */
            ifnull 12
        11: .line 133
            aload 7 /* client */
            aload 8 /* myFactory */
            invokevirtual org.apache.commons.net.ftp.FTPClient.setParserFactory:(Lorg/apache/commons/net/ftp/parser/FTPFileEntryParserFactory;)V
        12: .line 136
      StackMap locals: org.apache.commons.net.ftp.parser.FTPFileEntryParserFactory
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getRemoteVerification:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/Boolean;
            astore 9 /* remoteVerification */
        start local 9 // java.lang.Boolean remoteVerification
        13: .line 137
            aload 9 /* remoteVerification */
            ifnull 15
        14: .line 138
            aload 7 /* client */
            aload 9 /* remoteVerification */
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual org.apache.commons.net.ftp.FTPClient.setRemoteVerificationEnabled:(Z)V
        15: .line 143
      StackMap locals: java.lang.Boolean
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getConnectTimeout:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/Integer;
            astore 10 /* connectTimeout */
        start local 10 // java.lang.Integer connectTimeout
        16: .line 144
            aload 10 /* connectTimeout */
            ifnull 18
        17: .line 145
            aload 7 /* client */
            aload 10 /* connectTimeout */
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual org.apache.commons.net.ftp.FTPClient.setDefaultTimeout:(I)V
        18: .line 148
      StackMap locals: java.lang.Integer
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getControlEncoding:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/String;
            astore 11 /* controlEncoding */
        start local 11 // java.lang.String controlEncoding
        19: .line 149
            aload 11 /* controlEncoding */
            ifnull 21
        20: .line 150
            aload 7 /* client */
            aload 11 /* controlEncoding */
            invokevirtual org.apache.commons.net.ftp.FTPClient.setControlEncoding:(Ljava/lang/String;)V
        21: .line 153
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getAutodetectUtf8:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/Boolean;
            astore 12 /* autodetectUTF8 */
        start local 12 // java.lang.Boolean autodetectUTF8
        22: .line 154
            aload 12 /* autodetectUTF8 */
            ifnull 24
        23: .line 155
            aload 7 /* client */
            aload 12 /* autodetectUTF8 */
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual org.apache.commons.net.ftp.FTPClient.setAutodetectUTF8:(Z)V
        24: .line 158
      StackMap locals: java.lang.Boolean
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getProxy:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/net/Proxy;
            astore 13 /* proxy */
        start local 13 // java.net.Proxy proxy
        25: .line 159
            aload 13 /* proxy */
            ifnull 27
        26: .line 160
            aload 7 /* client */
            aload 13 /* proxy */
            invokevirtual org.apache.commons.net.ftp.FTPClient.setProxy:(Ljava/net/Proxy;)V
        27: .line 163
      StackMap locals: java.net.Proxy
      StackMap stack:
            aload 7 /* client */
            aload 1 /* hostname */
            iload 2 /* port */
            invokevirtual org.apache.commons.net.ftp.FTPClient.connect:(Ljava/lang/String;I)V
        28: .line 165
            aload 7 /* client */
            invokevirtual org.apache.commons.net.ftp.FTPClient.getReplyCode:()I
            istore 14 /* reply */
        start local 14 // int reply
        29: .line 166
            iload 14 /* reply */
            invokestatic org.apache.commons.net.ftp.FTPReply.isPositiveCompletion:(I)Z
            ifne 31
        30: .line 167
            new org.apache.commons.vfs2.FileSystemException
            dup
            ldc "vfs.provider.ftp/connect-rejected.error"
            aload 1 /* hostname */
            invokespecial org.apache.commons.vfs2.FileSystemException.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            athrow
        31: .line 171
      StackMap locals: int
      StackMap stack:
            aload 7 /* client */
            aload 3 /* username */
            invokestatic org.apache.commons.vfs2.util.UserAuthenticatorUtils.toString:([C)Ljava/lang/String;
        32: .line 172
            aload 4 /* password */
            invokestatic org.apache.commons.vfs2.util.UserAuthenticatorUtils.toString:([C)Ljava/lang/String;
        33: .line 171
            invokevirtual org.apache.commons.net.ftp.FTPClient.login:(Ljava/lang/String;Ljava/lang/String;)Z
        34: .line 172
            ifne 38
        35: .line 173
            new org.apache.commons.vfs2.FileSystemException
            dup
            ldc "vfs.provider.ftp/login.error"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* hostname */
            aastore
            dup
            iconst_1
        36: .line 174
            aload 3 /* username */
            invokestatic org.apache.commons.vfs2.util.UserAuthenticatorUtils.toString:([C)Ljava/lang/String;
        37: .line 173
            aastore
            invokespecial org.apache.commons.vfs2.FileSystemException.<init>:(Ljava/lang/String;[Ljava/lang/Object;)V
            athrow
        38: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getFileType:(Lorg/apache/commons/vfs2/FileSystemOptions;)Lorg/apache/commons/vfs2/provider/ftp/FtpFileType;
            astore 15 /* fileType */
        start local 15 // org.apache.commons.vfs2.provider.ftp.FtpFileType fileType
        39: .line 178
            aload 15 /* fileType */
            ifnonnull 41
        40: .line 179
            getstatic org.apache.commons.vfs2.provider.ftp.FtpFileType.BINARY:Lorg/apache/commons/vfs2/provider/ftp/FtpFileType;
            astore 15 /* fileType */
        41: .line 182
      StackMap locals: org.apache.commons.vfs2.provider.ftp.FtpFileType
      StackMap stack:
            aload 7 /* client */
            aload 15 /* fileType */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileType.getValue:()I
            invokevirtual org.apache.commons.net.ftp.FTPClient.setFileType:(I)Z
            ifne 43
        42: .line 183
            new org.apache.commons.vfs2.FileSystemException
            dup
            ldc "vfs.provider.ftp/set-file-type.error"
            aload 15 /* fileType */
            invokespecial org.apache.commons.vfs2.FileSystemException.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            athrow
        43: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getDataTimeout:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/Integer;
            astore 16 /* dataTimeout */
        start local 16 // java.lang.Integer dataTimeout
        44: .line 188
            aload 16 /* dataTimeout */
            ifnull 46
        45: .line 189
            aload 7 /* client */
            aload 16 /* dataTimeout */
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual org.apache.commons.net.ftp.FTPClient.setDataTimeout:(I)V
        46: .line 192
      StackMap locals: java.lang.Integer
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getSoTimeout:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/Integer;
            astore 17 /* socketTimeout */
        start local 17 // java.lang.Integer socketTimeout
        47: .line 193
            aload 17 /* socketTimeout */
            ifnull 49
        48: .line 194
            aload 7 /* client */
            aload 17 /* socketTimeout */
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual org.apache.commons.net.ftp.FTPClient.setSoTimeout:(I)V
        49: .line 197
      StackMap locals: java.lang.Integer
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getUserDirIsRoot:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/Boolean;
            astore 18 /* userDirIsRoot */
        start local 18 // java.lang.Boolean userDirIsRoot
        50: .line 198
            aload 5 /* workingDirectory */
            ifnull 55
            aload 18 /* userDirIsRoot */
            ifnull 51
            aload 18 /* userDirIsRoot */
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifne 55
        51: .line 199
      StackMap locals: java.lang.Boolean
      StackMap stack:
            aload 7 /* client */
            aload 5 /* workingDirectory */
            invokevirtual org.apache.commons.net.ftp.FTPClient.changeWorkingDirectory:(Ljava/lang/String;)Z
            ifne 55
        52: .line 200
            new org.apache.commons.vfs2.FileSystemException
            dup
            ldc "vfs.provider.ftp/change-work-directory.error"
        53: .line 201
            aload 5 /* workingDirectory */
        54: .line 200
            invokespecial org.apache.commons.vfs2.FileSystemException.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            athrow
        55: .line 205
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getPassiveMode:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/Boolean;
            astore 19 /* passiveMode */
        start local 19 // java.lang.Boolean passiveMode
        56: .line 206
            aload 19 /* passiveMode */
            ifnull 58
            aload 19 /* passiveMode */
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 58
        57: .line 207
            aload 7 /* client */
            invokevirtual org.apache.commons.net.ftp.FTPClient.enterLocalPassiveMode:()V
        58: .line 210
      StackMap locals: java.lang.Boolean
      StackMap stack:
            aload 0 /* this */
            aload 7 /* client */
            aload 6 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.setupOpenConnection:(Lorg/apache/commons/net/ftp/FTPClient;Lorg/apache/commons/vfs2/FileSystemOptions;)V
        end local 19 // java.lang.Boolean passiveMode
        end local 18 // java.lang.Boolean userDirIsRoot
        end local 17 // java.lang.Integer socketTimeout
        end local 16 // java.lang.Integer dataTimeout
        end local 15 // org.apache.commons.vfs2.provider.ftp.FtpFileType fileType
        end local 14 // int reply
        end local 13 // java.net.Proxy proxy
        end local 12 // java.lang.Boolean autodetectUTF8
        end local 11 // java.lang.String controlEncoding
        end local 10 // java.lang.Integer connectTimeout
        59: .line 211
            goto 64
      StackMap locals: org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory java.lang.String int char[] char[] java.lang.String org.apache.commons.vfs2.FileSystemOptions org.apache.commons.net.ftp.FTPClient org.apache.commons.net.ftp.parser.FTPFileEntryParserFactory java.lang.Boolean
      StackMap stack: java.io.IOException
        60: astore 10 /* e */
        start local 10 // java.io.IOException e
        61: .line 212
            aload 7 /* client */
            invokevirtual org.apache.commons.net.ftp.FTPClient.isConnected:()Z
            ifeq 63
        62: .line 213
            aload 7 /* client */
            invokevirtual org.apache.commons.net.ftp.FTPClient.disconnect:()V
        63: .line 215
      StackMap locals: java.io.IOException
      StackMap stack:
            aload 10 /* e */
            athrow
        end local 10 // java.io.IOException e
        64: .line 218
      StackMap locals:
      StackMap stack:
            aload 7 /* client */
        65: areturn
        end local 9 // java.lang.Boolean remoteVerification
        end local 8 // org.apache.commons.net.ftp.parser.FTPFileEntryParserFactory myFactory
        end local 7 // org.apache.commons.net.ftp.FTPClient client
        66: .line 219
      StackMap locals: org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory java.lang.String int char[] char[] java.lang.String org.apache.commons.vfs2.FileSystemOptions
      StackMap stack: java.lang.Exception
            astore 7 /* exc */
        start local 7 // java.lang.Exception exc
        67: .line 220
            new org.apache.commons.vfs2.FileSystemException
            dup
            ldc "vfs.provider.ftp/connect.error"
            aload 7 /* exc */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* hostname */
            aastore
            invokespecial org.apache.commons.vfs2.FileSystemException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)V
            athrow
        end local 7 // java.lang.Exception exc
        end local 6 // org.apache.commons.vfs2.FileSystemOptions fileSystemOptions
        end local 5 // java.lang.String workingDirectory
        end local 4 // char[] password
        end local 3 // char[] username
        end local 2 // int port
        end local 1 // java.lang.String hostname
        end local 0 // org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   68     0                this  Lorg/apache/commons/vfs2/provider/ftp/FtpClientFactory$ConnectionFactory<TC;TB;>;
            0   68     1            hostname  Ljava/lang/String;
            0   68     2                port  I
            0   68     3            username  [C
            0   68     4            password  [C
            0   68     5    workingDirectory  Ljava/lang/String;
            0   68     6   fileSystemOptions  Lorg/apache/commons/vfs2/FileSystemOptions;
            5   66     7              client  TC;
            7    8     8              writer  Ljava/io/Writer;
           10   66     8           myFactory  Lorg/apache/commons/net/ftp/parser/FTPFileEntryParserFactory;
           13   66     9  remoteVerification  Ljava/lang/Boolean;
           16   59    10      connectTimeout  Ljava/lang/Integer;
           19   59    11     controlEncoding  Ljava/lang/String;
           22   59    12      autodetectUTF8  Ljava/lang/Boolean;
           25   59    13               proxy  Ljava/net/Proxy;
           29   59    14               reply  I
           39   59    15            fileType  Lorg/apache/commons/vfs2/provider/ftp/FtpFileType;
           44   59    16         dataTimeout  Ljava/lang/Integer;
           47   59    17       socketTimeout  Ljava/lang/Integer;
           50   59    18       userDirIsRoot  Ljava/lang/Boolean;
           56   59    19         passiveMode  Ljava/lang/Boolean;
           61   64    10                   e  Ljava/io/IOException;
           67   68     7                 exc  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          15    59      60  Class java.io.IOException
           4    65      66  Class java.lang.Exception
    Exceptions:
      throws org.apache.commons.vfs2.FileSystemException
    Signature: (Ljava/lang/String;I[C[CLjava/lang/String;Lorg/apache/commons/vfs2/FileSystemOptions;)TC;
    MethodParameters:
                   Name  Flags
      hostname           final
      port               final
      username           
      password           
      workingDirectory   final
      fileSystemOptions  final

  protected abstract C createClient(org.apache.commons.vfs2.FileSystemOptions);
    descriptor: (Lorg/apache/commons/vfs2/FileSystemOptions;)Lorg/apache/commons/net/ftp/FTPClient;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws org.apache.commons.vfs2.FileSystemException
    Signature: (Lorg/apache/commons/vfs2/FileSystemOptions;)TC;
    MethodParameters:
                   Name  Flags
      fileSystemOptions  

  protected abstract void setupOpenConnection(C, org.apache.commons.vfs2.FileSystemOptions);
    descriptor: (Lorg/apache/commons/net/ftp/FTPClient;Lorg/apache/commons/vfs2/FileSystemOptions;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    Signature: (TC;Lorg/apache/commons/vfs2/FileSystemOptions;)V
    MethodParameters:
                   Name  Flags
      client             
      fileSystemOptions  

  private void configureClient(org.apache.commons.vfs2.FileSystemOptions, );
    descriptor: (Lorg/apache/commons/vfs2/FileSystemOptions;Lorg/apache/commons/net/ftp/FTPClient;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=15, args_size=3
        start local 0 // org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory this
        start local 1 // org.apache.commons.vfs2.FileSystemOptions fileSystemOptions
        start local 2 // org.apache.commons.net.ftp.FTPClient client
         0: .line 229
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 1 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getEntryParser:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/String;
            astore 3 /* key */
        start local 3 // java.lang.String key
         1: .line 230
            aload 3 /* key */
            ifnull 27
         2: .line 231
            new org.apache.commons.net.ftp.FTPClientConfig
            dup
            aload 3 /* key */
            invokespecial org.apache.commons.net.ftp.FTPClientConfig.<init>:(Ljava/lang/String;)V
            astore 4 /* config */
        start local 4 // org.apache.commons.net.ftp.FTPClientConfig config
         3: .line 233
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 1 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getServerLanguageCode:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/String;
            astore 5 /* serverLanguageCode */
        start local 5 // java.lang.String serverLanguageCode
         4: .line 234
            aload 5 /* serverLanguageCode */
            ifnull 6
         5: .line 235
            aload 4 /* config */
            aload 5 /* serverLanguageCode */
            invokevirtual org.apache.commons.net.ftp.FTPClientConfig.setServerLanguageCode:(Ljava/lang/String;)V
         6: .line 237
      StackMap locals: java.lang.String org.apache.commons.net.ftp.FTPClientConfig java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 1 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getDefaultDateFormat:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/String;
            astore 6 /* defaultDateFormat */
        start local 6 // java.lang.String defaultDateFormat
         7: .line 238
            aload 6 /* defaultDateFormat */
            ifnull 9
         8: .line 239
            aload 4 /* config */
            aload 6 /* defaultDateFormat */
            invokevirtual org.apache.commons.net.ftp.FTPClientConfig.setDefaultDateFormatStr:(Ljava/lang/String;)V
         9: .line 241
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 1 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getRecentDateFormat:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/String;
            astore 7 /* recentDateFormat */
        start local 7 // java.lang.String recentDateFormat
        10: .line 242
            aload 7 /* recentDateFormat */
            ifnull 12
        11: .line 243
            aload 4 /* config */
            aload 7 /* recentDateFormat */
            invokevirtual org.apache.commons.net.ftp.FTPClientConfig.setRecentDateFormatStr:(Ljava/lang/String;)V
        12: .line 245
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 1 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getServerTimeZoneId:(Lorg/apache/commons/vfs2/FileSystemOptions;)Ljava/lang/String;
            astore 8 /* serverTimeZoneId */
        start local 8 // java.lang.String serverTimeZoneId
        13: .line 246
            aload 8 /* serverTimeZoneId */
            ifnull 15
        14: .line 247
            aload 4 /* config */
            aload 8 /* serverTimeZoneId */
            invokevirtual org.apache.commons.net.ftp.FTPClientConfig.setServerTimeZoneId:(Ljava/lang/String;)V
        15: .line 249
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory.builder:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;
            aload 1 /* fileSystemOptions */
            invokevirtual org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder.getShortMonthNames:(Lorg/apache/commons/vfs2/FileSystemOptions;)[Ljava/lang/String;
            astore 9 /* shortMonthNames */
        start local 9 // java.lang.String[] shortMonthNames
        16: .line 250
            aload 9 /* shortMonthNames */
            ifnull 26
        17: .line 251
            new java.lang.StringBuilder
            dup
            bipush 40
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 10 /* shortMonthNamesStr */
        start local 10 // java.lang.StringBuilder shortMonthNamesStr
        18: .line 252
            aload 9 /* shortMonthNames */
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 24
      StackMap locals: org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory org.apache.commons.vfs2.FileSystemOptions org.apache.commons.net.ftp.FTPClient java.lang.String org.apache.commons.net.ftp.FTPClientConfig java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String[] java.lang.StringBuilder top int int java.lang.String[]
      StackMap stack:
        19: aload 14
            iload 12
            aaload
            astore 11 /* shortMonthName */
        start local 11 // java.lang.String shortMonthName
        20: .line 253
            aload 10 /* shortMonthNamesStr */
            invokevirtual java.lang.StringBuilder.length:()I
            ifle 22
        21: .line 254
            aload 10 /* shortMonthNamesStr */
            ldc "|"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 256
      StackMap locals: org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory org.apache.commons.vfs2.FileSystemOptions org.apache.commons.net.ftp.FTPClient java.lang.String org.apache.commons.net.ftp.FTPClientConfig java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String[] java.lang.StringBuilder java.lang.String int int java.lang.String[]
      StackMap stack:
            aload 10 /* shortMonthNamesStr */
            aload 11 /* shortMonthName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 11 // java.lang.String shortMonthName
        23: .line 252
            iinc 12 1
      StackMap locals: org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory org.apache.commons.vfs2.FileSystemOptions org.apache.commons.net.ftp.FTPClient java.lang.String org.apache.commons.net.ftp.FTPClientConfig java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String[] java.lang.StringBuilder top int int java.lang.String[]
      StackMap stack:
        24: iload 12
            iload 13
            if_icmplt 19
        25: .line 258
            aload 4 /* config */
            aload 10 /* shortMonthNamesStr */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.apache.commons.net.ftp.FTPClientConfig.setShortMonthNames:(Ljava/lang/String;)V
        end local 10 // java.lang.StringBuilder shortMonthNamesStr
        26: .line 261
      StackMap locals: org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory org.apache.commons.vfs2.FileSystemOptions org.apache.commons.net.ftp.FTPClient java.lang.String org.apache.commons.net.ftp.FTPClientConfig java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String[]
      StackMap stack:
            aload 2 /* client */
            aload 4 /* config */
            invokevirtual org.apache.commons.net.ftp.FTPClient.configure:(Lorg/apache/commons/net/ftp/FTPClientConfig;)V
        end local 9 // java.lang.String[] shortMonthNames
        end local 8 // java.lang.String serverTimeZoneId
        end local 7 // java.lang.String recentDateFormat
        end local 6 // java.lang.String defaultDateFormat
        end local 5 // java.lang.String serverLanguageCode
        end local 4 // org.apache.commons.net.ftp.FTPClientConfig config
        27: .line 263
      StackMap locals: org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory org.apache.commons.vfs2.FileSystemOptions org.apache.commons.net.ftp.FTPClient java.lang.String
      StackMap stack:
            return
        end local 3 // java.lang.String key
        end local 2 // org.apache.commons.net.ftp.FTPClient client
        end local 1 // org.apache.commons.vfs2.FileSystemOptions fileSystemOptions
        end local 0 // org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   28     0                this  Lorg/apache/commons/vfs2/provider/ftp/FtpClientFactory$ConnectionFactory<TC;TB;>;
            0   28     1   fileSystemOptions  Lorg/apache/commons/vfs2/FileSystemOptions;
            0   28     2              client  TC;
            1   28     3                 key  Ljava/lang/String;
            3   27     4              config  Lorg/apache/commons/net/ftp/FTPClientConfig;
            4   27     5  serverLanguageCode  Ljava/lang/String;
            7   27     6   defaultDateFormat  Ljava/lang/String;
           10   27     7    recentDateFormat  Ljava/lang/String;
           13   27     8    serverTimeZoneId  Ljava/lang/String;
           16   27     9     shortMonthNames  [Ljava/lang/String;
           18   26    10  shortMonthNamesStr  Ljava/lang/StringBuilder;
           20   23    11      shortMonthName  Ljava/lang/String;
    Signature: (Lorg/apache/commons/vfs2/FileSystemOptions;TC;)V
    MethodParameters:
                   Name  Flags
      fileSystemOptions  final
      client             final
}
Signature: <C:Lorg/apache/commons/net/ftp/FTPClient;B:Lorg/apache/commons/vfs2/provider/ftp/FtpFileSystemConfigBuilder;>Ljava/lang/Object;
SourceFile: "FtpClientFactory.java"
NestHost: org.apache.commons.vfs2.provider.ftp.FtpClientFactory
InnerClasses:
  public abstract ConnectionFactory = org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory of org.apache.commons.vfs2.provider.ftp.FtpClientFactory
  org.apache.commons.vfs2.provider.ftp.FtpClientFactory$ConnectionFactory$1