public class sun.net.www.protocol.ftp.FtpURLConnection extends sun.net.www.URLConnection
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.net.www.protocol.ftp.FtpURLConnection
  super_class: sun.net.www.URLConnection
{
  sun.net.www.protocol.http.HttpURLConnection http;
    descriptor: Lsun/net/www/protocol/http/HttpURLConnection;
    flags: (0x0000) 

  private java.net.Proxy instProxy;
    descriptor: Ljava/net/Proxy;
    flags: (0x0002) ACC_PRIVATE

  java.io.InputStream is;
    descriptor: Ljava/io/InputStream;
    flags: (0x0000) 

  java.io.OutputStream os;
    descriptor: Ljava/io/OutputStream;
    flags: (0x0000) 

  sun.net.ftp.FtpClient ftp;
    descriptor: Lsun/net/ftp/FtpClient;
    flags: (0x0000) 

  java.security.Permission permission;
    descriptor: Ljava/security/Permission;
    flags: (0x0000) 

  java.lang.String password;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  java.lang.String user;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  java.lang.String host;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  java.lang.String pathname;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  java.lang.String filename;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  java.lang.String fullpath;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  int port;
    descriptor: I
    flags: (0x0000) 

  static final int NONE;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  static final int ASCII;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int BIN;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int DIR;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  int type;
    descriptor: I
    flags: (0x0000) 

  private int connectTimeout;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int readTimeout;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static java.net.URL checkURL(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/net/URL;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // java.net.URL u
         0: .line 164
            aload 0 /* u */
            ifnull 4
         1: .line 165
            aload 0 /* u */
            invokevirtual java.net.URL.toExternalForm:()Ljava/lang/String;
            bipush 10
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmple 4
         2: .line 166
            new java.net.MalformedURLException
            dup
            ldc "Illegal character in URL"
            invokespecial java.net.MalformedURLException.<init>:(Ljava/lang/String;)V
            astore 1 /* mfue */
        start local 1 // java.lang.Exception mfue
         3: .line 167
            new java.lang.IllegalArgumentException
            dup
            aload 1 /* mfue */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aload 1 /* mfue */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception mfue
         4: .line 170
      StackMap locals:
      StackMap stack:
            aload 0 /* u */
            invokestatic sun.net.util.IPAddressUtil.checkAuthority:(Ljava/net/URL;)Ljava/lang/String;
            astore 1 /* s */
        start local 1 // java.lang.String s
         5: .line 171
            aload 1 /* s */
            ifnull 8
         6: .line 172
            new java.net.MalformedURLException
            dup
            aload 1 /* s */
            invokespecial java.net.MalformedURLException.<init>:(Ljava/lang/String;)V
            astore 2 /* mfue */
        start local 2 // java.lang.Exception mfue
         7: .line 173
            new java.lang.IllegalArgumentException
            dup
            aload 2 /* mfue */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aload 2 /* mfue */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception mfue
         8: .line 175
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* u */
            areturn
        end local 1 // java.lang.String s
        end local 0 // java.net.URL u
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0     u  Ljava/net/URL;
            3    4     1  mfue  Ljava/lang/Exception;
            5    9     1     s  Ljava/lang/String;
            7    8     2  mfue  Ljava/lang/Exception;
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
      Name  Flags
      u     

  public void <init>(java.net.URL);
    descriptor: (Ljava/net/URL;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
        start local 1 // java.net.URL url
         0: .line 184
            aload 0 /* this */
            aload 1 /* url */
            aconst_null
            invokespecial sun.net.www.protocol.ftp.FtpURLConnection.<init>:(Ljava/net/URL;Ljava/net/Proxy;)V
         1: .line 185
            return
        end local 1 // java.net.URL url
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            0    2     1   url  Ljava/net/URL;
    MethodParameters:
      Name  Flags
      url   

  void <init>(java.net.URL, java.net.Proxy);
    descriptor: (Ljava/net/URL;Ljava/net/Proxy;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
        start local 1 // java.net.URL url
        start local 2 // java.net.Proxy p
         0: .line 191
            aload 0 /* this */
            aload 1 /* url */
            invokestatic sun.net.www.protocol.ftp.FtpURLConnection.checkURL:(Ljava/net/URL;)Ljava/net/URL;
            invokespecial sun.net.www.URLConnection.<init>:(Ljava/net/URL;)V
         1: .line 89
            aload 0 /* this */
            aconst_null
            putfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
         2: .line 92
            aload 0 /* this */
            aconst_null
            putfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
         3: .line 93
            aload 0 /* this */
            aconst_null
            putfield sun.net.www.protocol.ftp.FtpURLConnection.os:Ljava/io/OutputStream;
         4: .line 95
            aload 0 /* this */
            aconst_null
            putfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
         5: .line 110
            aload 0 /* this */
            iconst_0
            putfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
         6: .line 114
            aload 0 /* this */
            iconst_m1
            putfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
         7: .line 115
            aload 0 /* this */
            iconst_m1
            putfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
         8: .line 192
            aload 0 /* this */
            aload 2 /* p */
            putfield sun.net.www.protocol.ftp.FtpURLConnection.instProxy:Ljava/net/Proxy;
         9: .line 193
            aload 0 /* this */
            aload 1 /* url */
            invokevirtual java.net.URL.getHost:()Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.host:Ljava/lang/String;
        10: .line 194
            aload 0 /* this */
            aload 1 /* url */
            invokevirtual java.net.URL.getPort:()I
            putfield sun.net.www.protocol.ftp.FtpURLConnection.port:I
        11: .line 195
            aload 1 /* url */
            invokevirtual java.net.URL.getUserInfo:()Ljava/lang/String;
            astore 3 /* userInfo */
        start local 3 // java.lang.String userInfo
        12: .line 197
            aload 3 /* userInfo */
            ifnull 20
        13: .line 198
            aload 3 /* userInfo */
            bipush 58
            invokevirtual java.lang.String.indexOf:(I)I
            istore 4 /* delimiter */
        start local 4 // int delimiter
        14: .line 199
            iload 4 /* delimiter */
            iconst_m1
            if_icmpne 18
        15: .line 200
            aload 0 /* this */
            aload 3 /* userInfo */
            invokestatic sun.net.www.ParseUtil.decode:(Ljava/lang/String;)Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.user:Ljava/lang/String;
        16: .line 201
            aload 0 /* this */
            aconst_null
            putfield sun.net.www.protocol.ftp.FtpURLConnection.password:Ljava/lang/String;
        17: .line 202
            goto 20
        18: .line 203
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection java.net.URL java.net.Proxy java.lang.String int
      StackMap stack:
            aload 0 /* this */
            aload 3 /* userInfo */
            iconst_0
            iload 4 /* delimiter */
            iinc 4 /* delimiter */ 1
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokestatic sun.net.www.ParseUtil.decode:(Ljava/lang/String;)Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.user:Ljava/lang/String;
        19: .line 204
            aload 0 /* this */
            aload 3 /* userInfo */
            iload 4 /* delimiter */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic sun.net.www.ParseUtil.decode:(Ljava/lang/String;)Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.password:Ljava/lang/String;
        end local 4 // int delimiter
        20: .line 207
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.String userInfo
        end local 2 // java.net.Proxy p
        end local 1 // java.net.URL url
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   21     0       this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            0   21     1        url  Ljava/net/URL;
            0   21     2          p  Ljava/net/Proxy;
           12   21     3   userInfo  Ljava/lang/String;
           14   20     4  delimiter  I
    MethodParameters:
      Name  Flags
      url   
      p     

  private void setTimeouts();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
         0: .line 210
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            ifnull 5
         1: .line 211
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
            iflt 3
         2: .line 212
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
            invokevirtual sun.net.ftp.FtpClient.setConnectTimeout:(I)Lsun/net/ftp/FtpClient;
            pop
         3: .line 214
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
            iflt 5
         4: .line 215
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
            invokevirtual sun.net.ftp.FtpClient.setReadTimeout:(I)Lsun/net/ftp/FtpClient;
            pop
         5: .line 218
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lsun/net/www/protocol/ftp/FtpURLConnection;

  public synchronized void connect();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=6, locals=8, args_size=1
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
         0: .line 229
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connected:Z
            ifeq 2
         1: .line 230
            return
         2: .line 233
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 1 /* p */
        start local 1 // java.net.Proxy p
         3: .line 234
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.instProxy:Ljava/net/Proxy;
            ifnonnull 38
         4: .line 239
            new sun.net.www.protocol.ftp.FtpURLConnection$1
            dup
            aload 0 /* this */
            invokespecial sun.net.www.protocol.ftp.FtpURLConnection$1.<init>:(Lsun/net/www/protocol/ftp/FtpURLConnection;)V
         5: .line 238
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.net.ProxySelector
            astore 2 /* sel */
        start local 2 // java.net.ProxySelector sel
         6: .line 244
            aload 2 /* sel */
            ifnull 50
         7: .line 245
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.url:Ljava/net/URL;
            invokestatic sun.net.www.ParseUtil.toURI:(Ljava/net/URL;)Ljava/net/URI;
            astore 3 /* uri */
        start local 3 // java.net.URI uri
         8: .line 248
            aload 2 /* sel */
            aload 3 /* uri */
            invokevirtual java.net.ProxySelector.select:(Ljava/net/URI;)Ljava/util/List;
            astore 4 /* proxies */
        start local 4 // java.util.List proxies
         9: .line 249
            goto 12
        end local 4 // java.util.List proxies
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection java.net.Proxy java.net.ProxySelector java.net.URI
      StackMap stack: java.lang.IllegalArgumentException
        10: astore 5 /* iae */
        start local 5 // java.lang.IllegalArgumentException iae
        11: .line 250
            new java.io.IOException
            dup
            ldc "Failed to select a proxy"
            aload 5 /* iae */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.IllegalArgumentException iae
        start local 4 // java.util.List proxies
        12: .line 252
      StackMap locals: java.util.List
      StackMap stack:
            aload 4 /* proxies */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5 /* it */
        start local 5 // java.util.Iterator it
        13: .line 253
            goto 36
        14: .line 254
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 5 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.Proxy
            astore 1 /* p */
        15: .line 255
            aload 1 /* p */
            ifnull 50
            aload 1 /* p */
            getstatic java.net.Proxy.NO_PROXY:Ljava/net/Proxy;
            if_acmpeq 50
        16: .line 256
            aload 1 /* p */
            invokevirtual java.net.Proxy.type:()Ljava/net/Proxy$Type;
            getstatic java.net.Proxy$Type.SOCKS:Ljava/net/Proxy$Type;
            if_acmpne 18
        17: .line 257
            goto 50
        18: .line 259
      StackMap locals:
      StackMap stack:
            aload 1 /* p */
            invokevirtual java.net.Proxy.type:()Ljava/net/Proxy$Type;
            getstatic java.net.Proxy$Type.HTTP:Ljava/net/Proxy$Type;
            if_acmpne 20
        19: .line 260
            aload 1 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            instanceof java.net.InetSocketAddress
            ifne 22
        20: .line 261
      StackMap locals:
      StackMap stack:
            aload 2 /* sel */
            aload 3 /* uri */
            aload 1 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            new java.io.IOException
            dup
            ldc "Wrong proxy type"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            invokevirtual java.net.ProxySelector.connectFailed:(Ljava/net/URI;Ljava/net/SocketAddress;Ljava/io/IOException;)V
        21: .line 262
            goto 36
        22: .line 265
      StackMap locals:
      StackMap stack:
            aload 1 /* p */
            invokevirtual java.net.Proxy.address:()Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            astore 6 /* paddr */
        start local 6 // java.net.InetSocketAddress paddr
        23: .line 267
            aload 0 /* this */
            new sun.net.www.protocol.http.HttpURLConnection
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.url:Ljava/net/URL;
            aload 1 /* p */
            invokespecial sun.net.www.protocol.http.HttpURLConnection.<init>:(Ljava/net/URL;Ljava/net/Proxy;)V
            putfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
        24: .line 268
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            aload 0 /* this */
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.getDoInput:()Z
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.setDoInput:(Z)V
        25: .line 269
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            aload 0 /* this */
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.getDoOutput:()Z
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.setDoOutput:(Z)V
        26: .line 270
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
            iflt 28
        27: .line 271
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.setConnectTimeout:(I)V
        28: .line 273
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
            iflt 30
        29: .line 274
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.setReadTimeout:(I)V
        30: .line 276
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.connect:()V
        31: .line 277
            aload 0 /* this */
            iconst_1
            putfield sun.net.www.protocol.ftp.FtpURLConnection.connected:Z
        32: .line 278
            return
        33: .line 279
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 7 /* ioe */
        start local 7 // java.io.IOException ioe
        34: .line 280
            aload 2 /* sel */
            aload 3 /* uri */
            aload 6 /* paddr */
            aload 7 /* ioe */
            invokevirtual java.net.ProxySelector.connectFailed:(Ljava/net/URI;Ljava/net/SocketAddress;Ljava/io/IOException;)V
        35: .line 281
            aload 0 /* this */
            aconst_null
            putfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
        end local 7 // java.io.IOException ioe
        end local 6 // java.net.InetSocketAddress paddr
        36: .line 253
      StackMap locals:
      StackMap stack:
            aload 5 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        end local 5 // java.util.Iterator it
        end local 4 // java.util.List proxies
        end local 3 // java.net.URI uri
        end local 2 // java.net.ProxySelector sel
        37: .line 285
            goto 50
        38: .line 286
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection java.net.Proxy
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.instProxy:Ljava/net/Proxy;
            astore 1 /* p */
        39: .line 287
            aload 1 /* p */
            invokevirtual java.net.Proxy.type:()Ljava/net/Proxy$Type;
            getstatic java.net.Proxy$Type.HTTP:Ljava/net/Proxy$Type;
            if_acmpne 50
        40: .line 288
            aload 0 /* this */
            new sun.net.www.protocol.http.HttpURLConnection
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.url:Ljava/net/URL;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.instProxy:Ljava/net/Proxy;
            invokespecial sun.net.www.protocol.http.HttpURLConnection.<init>:(Ljava/net/URL;Ljava/net/Proxy;)V
            putfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
        41: .line 289
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            aload 0 /* this */
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.getDoInput:()Z
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.setDoInput:(Z)V
        42: .line 290
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            aload 0 /* this */
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.getDoOutput:()Z
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.setDoOutput:(Z)V
        43: .line 291
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
            iflt 45
        44: .line 292
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.setConnectTimeout:(I)V
        45: .line 294
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
            iflt 47
        46: .line 295
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.setReadTimeout:(I)V
        47: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.connect:()V
        48: .line 298
            aload 0 /* this */
            iconst_1
            putfield sun.net.www.protocol.ftp.FtpURLConnection.connected:Z
        49: .line 299
            return
        50: .line 303
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.user:Ljava/lang/String;
            ifnonnull 57
        51: .line 304
            aload 0 /* this */
            ldc "anonymous"
            putfield sun.net.www.protocol.ftp.FtpURLConnection.user:Ljava/lang/String;
        52: .line 305
            invokestatic sun.security.action.GetPropertyAction.privilegedGetProperties:()Ljava/util/Properties;
            astore 2 /* props */
        start local 2 // java.util.Properties props
        53: .line 306
            aload 2 /* props */
            ldc "java.version"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* vers */
        start local 3 // java.lang.String vers
        54: .line 307
            aload 0 /* this */
            aload 2 /* props */
            ldc "ftp.protocol.user"
        55: .line 308
            new java.lang.StringBuilder
            dup
            ldc "Java"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* vers */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "@"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        56: .line 307
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.password:Ljava/lang/String;
        end local 3 // java.lang.String vers
        end local 2 // java.util.Properties props
        57: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.net.ftp.FtpClient.create:()Lsun/net/ftp/FtpClient;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
        58: .line 312
            aload 1 /* p */
            ifnull 60
        59: .line 313
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 1 /* p */
            invokevirtual sun.net.ftp.FtpClient.setProxy:(Ljava/net/Proxy;)Lsun/net/ftp/FtpClient;
            pop
        60: .line 315
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.setTimeouts:()V
        61: .line 316
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.port:I
            iconst_m1
            if_icmpeq 64
        62: .line 317
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            new java.net.InetSocketAddress
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.host:Ljava/lang/String;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.port:I
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            invokevirtual sun.net.ftp.FtpClient.connect:(Ljava/net/SocketAddress;)Lsun/net/ftp/FtpClient;
            pop
        63: .line 318
            goto 75
        64: .line 319
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            new java.net.InetSocketAddress
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.host:Ljava/lang/String;
            invokestatic sun.net.ftp.FtpClient.defaultPort:()I
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            invokevirtual sun.net.ftp.FtpClient.connect:(Ljava/net/SocketAddress;)Lsun/net/ftp/FtpClient;
            pop
        65: .line 321
            goto 75
      StackMap locals:
      StackMap stack: java.net.UnknownHostException
        66: astore 2 /* e */
        start local 2 // java.net.UnknownHostException e
        67: .line 324
            aload 2 /* e */
            athrow
        end local 2 // java.net.UnknownHostException e
        68: .line 325
      StackMap locals:
      StackMap stack: sun.net.ftp.FtpProtocolException
            astore 2 /* fe */
        start local 2 // sun.net.ftp.FtpProtocolException fe
        69: .line 326
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            ifnull 74
        70: .line 328
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.close:()V
        71: .line 329
            goto 74
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection java.net.Proxy sun.net.ftp.FtpProtocolException
      StackMap stack: java.io.IOException
        72: astore 3 /* ioe */
        start local 3 // java.io.IOException ioe
        73: .line 330
            aload 2 /* fe */
            aload 3 /* ioe */
            invokevirtual sun.net.ftp.FtpProtocolException.addSuppressed:(Ljava/lang/Throwable;)V
        end local 3 // java.io.IOException ioe
        74: .line 333
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            aload 2 /* fe */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // sun.net.ftp.FtpProtocolException fe
        75: .line 336
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.user:Ljava/lang/String;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.password:Ljava/lang/String;
            ifnonnull 76
            aconst_null
            goto 77
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection java.net.Proxy
      StackMap stack: sun.net.ftp.FtpClient java.lang.String
        76: aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.password:Ljava/lang/String;
            invokevirtual java.lang.String.toCharArray:()[C
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection java.net.Proxy
      StackMap stack: sun.net.ftp.FtpClient java.lang.String char[]
        77: invokevirtual sun.net.ftp.FtpClient.login:(Ljava/lang/String;[C)Lsun/net/ftp/FtpClient;
            pop
        78: .line 337
            goto 82
      StackMap locals:
      StackMap stack: sun.net.ftp.FtpProtocolException
        79: pop
        80: .line 338
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.close:()V
        81: .line 340
            new sun.net.ftp.FtpLoginException
            dup
            ldc "Invalid username/password"
            invokespecial sun.net.ftp.FtpLoginException.<init>:(Ljava/lang/String;)V
            athrow
        82: .line 342
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.net.www.protocol.ftp.FtpURLConnection.connected:Z
        83: .line 343
            return
        end local 1 // java.net.Proxy p
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   84     0     this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            3   84     1        p  Ljava/net/Proxy;
            6   37     2      sel  Ljava/net/ProxySelector;
            8   37     3      uri  Ljava/net/URI;
            9   10     4  proxies  Ljava/util/List<Ljava/net/Proxy;>;
           12   37     4  proxies  Ljava/util/List<Ljava/net/Proxy;>;
           11   12     5      iae  Ljava/lang/IllegalArgumentException;
           13   37     5       it  Ljava/util/Iterator<Ljava/net/Proxy;>;
           23   36     6    paddr  Ljava/net/InetSocketAddress;
           34   36     7      ioe  Ljava/io/IOException;
           53   57     2    props  Ljava/util/Properties;
           54   57     3     vers  Ljava/lang/String;
           67   68     2        e  Ljava/net/UnknownHostException;
           69   75     2       fe  Lsun/net/ftp/FtpProtocolException;
           73   74     3      ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           8     9      10  Class java.lang.IllegalArgumentException
          23    32      33  Class java.io.IOException
          57    65      66  Class java.net.UnknownHostException
          57    65      68  Class sun.net.ftp.FtpProtocolException
          70    71      72  Class java.io.IOException
          75    78      79  Class sun.net.ftp.FtpProtocolException
    Exceptions:
      throws java.io.IOException

  private void decodePath(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
        start local 1 // java.lang.String path
         0: .line 350
            aload 1 /* path */
            ldc ";type="
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 2 /* i */
        start local 2 // int i
         1: .line 351
            iload 2 /* i */
            iflt 10
         2: .line 352
            aload 1 /* path */
            iload 2 /* i */
            bipush 6
            iadd
            aload 1 /* path */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* s1 */
        start local 3 // java.lang.String s1
         3: .line 353
            ldc "i"
            aload 3 /* s1 */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 354
            aload 0 /* this */
            iconst_2
            putfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
         5: .line 356
      StackMap locals: int java.lang.String
      StackMap stack:
            ldc "a"
            aload 3 /* s1 */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 7
         6: .line 357
            aload 0 /* this */
            iconst_1
            putfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
         7: .line 359
      StackMap locals:
      StackMap stack:
            ldc "d"
            aload 3 /* s1 */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 9
         8: .line 360
            aload 0 /* this */
            iconst_3
            putfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
         9: .line 362
      StackMap locals:
      StackMap stack:
            aload 1 /* path */
            iconst_0
            iload 2 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 1 /* path */
        end local 3 // java.lang.String s1
        10: .line 364
      StackMap locals:
      StackMap stack:
            aload 1 /* path */
            ifnull 13
            aload 1 /* path */
            invokevirtual java.lang.String.length:()I
            iconst_1
            if_icmple 13
        11: .line 365
            aload 1 /* path */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 47
            if_icmpne 13
        12: .line 366
            aload 1 /* path */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* path */
        13: .line 368
      StackMap locals:
      StackMap stack:
            aload 1 /* path */
            ifnull 14
            aload 1 /* path */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 15
        14: .line 369
      StackMap locals:
      StackMap stack:
            ldc "./"
            astore 1 /* path */
        15: .line 371
      StackMap locals:
      StackMap stack:
            aload 1 /* path */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 25
        16: .line 372
            aload 1 /* path */
            bipush 47
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 2 /* i */
        17: .line 373
            iload 2 /* i */
            ifle 22
        18: .line 374
            aload 0 /* this */
            aload 1 /* path */
            iload 2 /* i */
            iconst_1
            iadd
            aload 1 /* path */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
        19: .line 375
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            invokestatic sun.net.www.ParseUtil.decode:(Ljava/lang/String;)Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
        20: .line 376
            aload 0 /* this */
            aload 1 /* path */
            iconst_0
            iload 2 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.pathname:Ljava/lang/String;
        21: .line 377
            goto 27
        22: .line 378
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* path */
            invokestatic sun.net.www.ParseUtil.decode:(Ljava/lang/String;)Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
        23: .line 379
            aload 0 /* this */
            aconst_null
            putfield sun.net.www.protocol.ftp.FtpURLConnection.pathname:Ljava/lang/String;
        24: .line 381
            goto 27
        25: .line 382
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* path */
            iconst_0
            aload 1 /* path */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.pathname:Ljava/lang/String;
        26: .line 383
            aload 0 /* this */
            aconst_null
            putfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
        27: .line 385
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.pathname:Ljava/lang/String;
            ifnull 32
        28: .line 386
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.pathname:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            ifnull 29
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            goto 30
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection java.lang.String int
      StackMap stack: sun.net.www.protocol.ftp.FtpURLConnection java.lang.StringBuilder
        29: ldc ""
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection java.lang.String int
      StackMap stack: sun.net.www.protocol.ftp.FtpURLConnection java.lang.StringBuilder java.lang.String
        30: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.fullpath:Ljava/lang/String;
        31: .line 387
            goto 33
        32: .line 388
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            putfield sun.net.www.protocol.ftp.FtpURLConnection.fullpath:Ljava/lang/String;
        33: .line 390
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int i
        end local 1 // java.lang.String path
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   34     0  this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            0   34     1  path  Ljava/lang/String;
            1   34     2     i  I
            3   10     3    s1  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  

  private void cd(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
        start local 1 // java.lang.String path
         0: .line 399
            aload 1 /* path */
            ifnull 1
            aload 1 /* path */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
         1: .line 400
      StackMap locals:
      StackMap stack:
            return
         2: .line 402
      StackMap locals:
      StackMap stack:
            aload 1 /* path */
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 5
         3: .line 403
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 1 /* path */
            invokestatic sun.net.www.ParseUtil.decode:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual sun.net.ftp.FtpClient.changeDirectory:(Ljava/lang/String;)Lsun/net/ftp/FtpClient;
            pop
         4: .line 404
            return
         5: .line 407
      StackMap locals:
      StackMap stack:
            new java.util.StringTokenizer
            dup
            aload 1 /* path */
            ldc "/"
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 2 /* token */
        start local 2 // java.util.StringTokenizer token
         6: .line 408
            goto 8
         7: .line 409
      StackMap locals: java.util.StringTokenizer
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 2 /* token */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            invokestatic sun.net.www.ParseUtil.decode:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual sun.net.ftp.FtpClient.changeDirectory:(Ljava/lang/String;)Lsun/net/ftp/FtpClient;
            pop
         8: .line 408
      StackMap locals:
      StackMap stack:
            aload 2 /* token */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifne 7
         9: .line 411
            return
        end local 2 // java.util.StringTokenizer token
        end local 1 // java.lang.String path
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            0   10     1   path  Ljava/lang/String;
            6   10     2  token  Ljava/util/StringTokenizer;
    Exceptions:
      throws sun.net.ftp.FtpProtocolException, java.io.IOException
    MethodParameters:
      Name  Flags
      path  

  public java.io.InputStream getInputStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=1
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
         0: .line 424
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connected:Z
            ifne 2
         1: .line 425
            aload 0 /* this */
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.connect:()V
         2: .line 428
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            ifnull 4
         3: .line 429
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.getInputStream:()Ljava/io/InputStream;
            areturn
         4: .line 432
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.os:Ljava/io/OutputStream;
            ifnull 6
         5: .line 433
            new java.io.IOException
            dup
            ldc "Already opened for output"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 436
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
            ifnull 8
         7: .line 437
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
            areturn
         8: .line 440
      StackMap locals:
      StackMap stack:
            new sun.net.www.MessageHeader
            dup
            invokespecial sun.net.www.MessageHeader.<init>:()V
            astore 1 /* msgh */
        start local 1 // sun.net.www.MessageHeader msgh
         9: .line 442
            iconst_0
            istore 2 /* isAdir */
        start local 2 // boolean isAdir
        10: .line 444
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.url:Ljava/net/URL;
            invokevirtual java.net.URL.getPath:()Ljava/lang/String;
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.decodePath:(Ljava/lang/String;)V
        11: .line 445
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            ifnull 12
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
            iconst_3
            if_icmpne 19
        12: .line 446
      StackMap locals: sun.net.www.MessageHeader int
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.setAsciiType:()Lsun/net/ftp/FtpClient;
            pop
        13: .line 447
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.pathname:Ljava/lang/String;
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.cd:(Ljava/lang/String;)V
        14: .line 448
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            ifnonnull 17
        15: .line 449
            aload 0 /* this */
            new sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aconst_null
            invokevirtual sun.net.ftp.FtpClient.list:(Ljava/lang/String;)Ljava/io/InputStream;
            invokespecial sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream.<init>:(Lsun/net/www/protocol/ftp/FtpURLConnection;Lsun/net/ftp/FtpClient;Ljava/io/InputStream;)V
            putfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
        16: .line 450
            goto 25
        17: .line 451
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            invokevirtual sun.net.ftp.FtpClient.nameList:(Ljava/lang/String;)Ljava/io/InputStream;
            invokespecial sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream.<init>:(Lsun/net/www/protocol/ftp/FtpURLConnection;Lsun/net/ftp/FtpClient;Ljava/io/InputStream;)V
            putfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
        18: .line 453
            goto 25
        19: .line 454
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
            iconst_1
            if_icmpne 22
        20: .line 455
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.setAsciiType:()Lsun/net/ftp/FtpClient;
            pop
        21: .line 456
            goto 23
        22: .line 457
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.setBinaryType:()Lsun/net/ftp/FtpClient;
            pop
        23: .line 459
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.pathname:Ljava/lang/String;
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.cd:(Ljava/lang/String;)V
        24: .line 460
            aload 0 /* this */
            new sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            invokevirtual sun.net.ftp.FtpClient.getFileStream:(Ljava/lang/String;)Ljava/io/InputStream;
            invokespecial sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream.<init>:(Lsun/net/www/protocol/ftp/FtpURLConnection;Lsun/net/ftp/FtpClient;Ljava/io/InputStream;)V
            putfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
        25: .line 466
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.getLastTransferSize:()J
            lstore 3 /* l */
        start local 3 // long l
        26: .line 467
            aload 1 /* msgh */
            ldc "content-length"
            lload 3 /* l */
            invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
            invokevirtual sun.net.www.MessageHeader.add:(Ljava/lang/String;Ljava/lang/String;)V
        27: .line 468
            lload 3 /* l */
            lconst_0
            lcmp
            ifle 37
        28: .line 474
            invokestatic sun.net.ProgressMonitor.getDefault:()Lsun/net/ProgressMonitor;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.url:Ljava/net/URL;
            ldc "GET"
            invokevirtual sun.net.ProgressMonitor.shouldMeterInput:(Ljava/net/URL;Ljava/lang/String;)Z
            istore 5 /* meteredInput */
        start local 5 // boolean meteredInput
        29: .line 475
            aconst_null
            astore 6 /* pi */
        start local 6 // sun.net.ProgressSource pi
        30: .line 477
            iload 5 /* meteredInput */
            ifeq 33
        31: .line 478
            new sun.net.ProgressSource
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.url:Ljava/net/URL;
            ldc "GET"
            lload 3 /* l */
            invokespecial sun.net.ProgressSource.<init>:(Ljava/net/URL;Ljava/lang/String;J)V
            astore 6 /* pi */
        32: .line 479
            aload 6 /* pi */
            invokevirtual sun.net.ProgressSource.beginTracking:()V
        33: .line 482
      StackMap locals: long int sun.net.ProgressSource
      StackMap stack:
            aload 0 /* this */
            new sun.net.www.MeteredStream
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
            aload 6 /* pi */
            lload 3 /* l */
            invokespecial sun.net.www.MeteredStream.<init>:(Ljava/io/InputStream;Lsun/net/ProgressSource;J)V
            putfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
        end local 6 // sun.net.ProgressSource pi
        end local 5 // boolean meteredInput
        end local 3 // long l
        34: .line 484
            goto 37
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection sun.net.www.MessageHeader int
      StackMap stack: java.lang.Exception
        35: astore 3 /* e */
        start local 3 // java.lang.Exception e
        36: .line 485
            aload 3 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        end local 3 // java.lang.Exception e
        37: .line 490
      StackMap locals:
      StackMap stack:
            iload 2 /* isAdir */
            ifeq 41
        38: .line 491
            aload 1 /* msgh */
            ldc "content-type"
            ldc "text/plain"
            invokevirtual sun.net.www.MessageHeader.add:(Ljava/lang/String;Ljava/lang/String;)V
        39: .line 492
            aload 1 /* msgh */
            ldc "access-type"
            ldc "directory"
            invokevirtual sun.net.www.MessageHeader.add:(Ljava/lang/String;Ljava/lang/String;)V
        40: .line 493
            goto 78
        41: .line 494
      StackMap locals:
      StackMap stack:
            aload 1 /* msgh */
            ldc "access-type"
            ldc "file"
            invokevirtual sun.net.www.MessageHeader.add:(Ljava/lang/String;Ljava/lang/String;)V
        42: .line 495
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.fullpath:Ljava/lang/String;
            invokestatic sun.net.www.protocol.ftp.FtpURLConnection.guessContentTypeFromName:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* ftype */
        start local 3 // java.lang.String ftype
        43: .line 496
            aload 3 /* ftype */
            ifnonnull 45
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.markSupported:()Z
            ifeq 45
        44: .line 497
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
            invokestatic sun.net.www.protocol.ftp.FtpURLConnection.guessContentTypeFromStream:(Ljava/io/InputStream;)Ljava/lang/String;
            astore 3 /* ftype */
        45: .line 499
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* ftype */
            ifnull 78
        46: .line 500
            aload 1 /* msgh */
            ldc "content-type"
            aload 3 /* ftype */
            invokevirtual sun.net.www.MessageHeader.add:(Ljava/lang/String;Ljava/lang/String;)V
        end local 3 // java.lang.String ftype
        47: .line 503
            goto 78
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection sun.net.www.MessageHeader int
      StackMap stack: java.io.FileNotFoundException
        48: pop
        49: .line 505
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.fullpath:Ljava/lang/String;
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.cd:(Ljava/lang/String;)V
        50: .line 509
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.setAsciiType:()Lsun/net/ftp/FtpClient;
            pop
        51: .line 511
            aload 0 /* this */
            new sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aconst_null
            invokevirtual sun.net.ftp.FtpClient.list:(Ljava/lang/String;)Ljava/io/InputStream;
            invokespecial sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream.<init>:(Lsun/net/www/protocol/ftp/FtpURLConnection;Lsun/net/ftp/FtpClient;Ljava/io/InputStream;)V
            putfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
        52: .line 512
            aload 1 /* msgh */
            ldc "content-type"
            ldc "text/plain"
            invokevirtual sun.net.www.MessageHeader.add:(Ljava/lang/String;Ljava/lang/String;)V
        53: .line 513
            aload 1 /* msgh */
            ldc "access-type"
            ldc "directory"
            invokevirtual sun.net.www.MessageHeader.add:(Ljava/lang/String;Ljava/lang/String;)V
        54: .line 514
            goto 78
      StackMap locals:
      StackMap stack: java.io.IOException
        55: pop
        56: .line 515
            new java.io.FileNotFoundException
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.fullpath:Ljava/lang/String;
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            astore 3 /* fnfe */
        start local 3 // java.io.FileNotFoundException fnfe
        57: .line 516
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            ifnull 62
        58: .line 518
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.close:()V
        59: .line 519
            goto 62
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection sun.net.www.MessageHeader int java.io.FileNotFoundException
      StackMap stack: java.io.IOException
        60: astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
        61: .line 520
            aload 3 /* fnfe */
            aload 4 /* ioe */
            invokevirtual java.io.FileNotFoundException.addSuppressed:(Ljava/lang/Throwable;)V
        end local 4 // java.io.IOException ioe
        62: .line 523
      StackMap locals:
      StackMap stack:
            aload 3 /* fnfe */
            athrow
        end local 3 // java.io.FileNotFoundException fnfe
        63: .line 524
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection sun.net.www.MessageHeader int
      StackMap stack: sun.net.ftp.FtpProtocolException
            pop
        64: .line 525
            new java.io.FileNotFoundException
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.fullpath:Ljava/lang/String;
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            astore 3 /* fnfe */
        start local 3 // java.io.FileNotFoundException fnfe
        65: .line 526
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            ifnull 70
        66: .line 528
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.close:()V
        67: .line 529
            goto 70
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection sun.net.www.MessageHeader int java.io.FileNotFoundException
      StackMap stack: java.io.IOException
        68: astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
        69: .line 530
            aload 3 /* fnfe */
            aload 4 /* ioe */
            invokevirtual java.io.FileNotFoundException.addSuppressed:(Ljava/lang/Throwable;)V
        end local 4 // java.io.IOException ioe
        70: .line 533
      StackMap locals:
      StackMap stack:
            aload 3 /* fnfe */
            athrow
        end local 3 // java.io.FileNotFoundException fnfe
        71: .line 535
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection sun.net.www.MessageHeader int
      StackMap stack: sun.net.ftp.FtpProtocolException
            astore 3 /* ftpe */
        start local 3 // sun.net.ftp.FtpProtocolException ftpe
        72: .line 536
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            ifnull 77
        73: .line 538
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.close:()V
        74: .line 539
            goto 77
      StackMap locals: sun.net.www.protocol.ftp.FtpURLConnection sun.net.www.MessageHeader int sun.net.ftp.FtpProtocolException
      StackMap stack: java.io.IOException
        75: astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
        76: .line 540
            aload 3 /* ftpe */
            aload 4 /* ioe */
            invokevirtual sun.net.ftp.FtpProtocolException.addSuppressed:(Ljava/lang/Throwable;)V
        end local 4 // java.io.IOException ioe
        77: .line 543
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            aload 3 /* ftpe */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // sun.net.ftp.FtpProtocolException ftpe
        78: .line 545
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* msgh */
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.setProperties:(Lsun/net/www/MessageHeader;)V
        79: .line 546
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
            areturn
        end local 2 // boolean isAdir
        end local 1 // sun.net.www.MessageHeader msgh
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   80     0          this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            9   80     1          msgh  Lsun/net/www/MessageHeader;
           10   80     2        isAdir  Z
           26   34     3             l  J
           29   34     5  meteredInput  Z
           30   34     6            pi  Lsun/net/ProgressSource;
           36   37     3             e  Ljava/lang/Exception;
           43   47     3         ftype  Ljava/lang/String;
           57   63     3          fnfe  Ljava/io/FileNotFoundException;
           61   62     4           ioe  Ljava/io/IOException;
           65   71     3          fnfe  Ljava/io/FileNotFoundException;
           69   70     4           ioe  Ljava/io/IOException;
           72   78     3          ftpe  Lsun/net/ftp/FtpProtocolException;
           76   77     4           ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          25    34      35  Class java.lang.Exception
          10    47      48  Class java.io.FileNotFoundException
          49    54      55  Class java.io.IOException
          58    59      60  Class java.io.IOException
          49    54      63  Class sun.net.ftp.FtpProtocolException
          66    67      68  Class java.io.IOException
          10    47      71  Class sun.net.ftp.FtpProtocolException
          73    74      75  Class java.io.IOException
    Exceptions:
      throws java.io.IOException

  public java.io.OutputStream getOutputStream();
    descriptor: ()Ljava/io/OutputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=2, args_size=1
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
         0: .line 561
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connected:Z
            ifne 2
         1: .line 562
            aload 0 /* this */
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.connect:()V
         2: .line 565
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            ifnull 6
         3: .line 566
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.getOutputStream:()Ljava/io/OutputStream;
            astore 1 /* out */
        start local 1 // java.io.OutputStream out
         4: .line 569
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.http:Lsun/net/www/protocol/http/HttpURLConnection;
            invokevirtual sun.net.www.protocol.http.HttpURLConnection.getInputStream:()Ljava/io/InputStream;
            pop
         5: .line 570
            aload 1 /* out */
            areturn
        end local 1 // java.io.OutputStream out
         6: .line 573
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.is:Ljava/io/InputStream;
            ifnull 8
         7: .line 574
            new java.io.IOException
            dup
            ldc "Already opened for input"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 577
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.os:Ljava/io/OutputStream;
            ifnull 10
         9: .line 578
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.os:Ljava/io/OutputStream;
            areturn
        10: .line 581
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.url:Ljava/net/URL;
            invokevirtual java.net.URL.getPath:()Ljava/lang/String;
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.decodePath:(Ljava/lang/String;)V
        11: .line 582
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            ifnull 12
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 13
        12: .line 583
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "illegal filename for a PUT"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 586
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.pathname:Ljava/lang/String;
            ifnull 15
        14: .line 587
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.pathname:Ljava/lang/String;
            invokevirtual sun.net.www.protocol.ftp.FtpURLConnection.cd:(Ljava/lang/String;)V
        15: .line 589
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
            iconst_1
            if_icmpne 18
        16: .line 590
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.setAsciiType:()Lsun/net/ftp/FtpClient;
            pop
        17: .line 591
            goto 19
        18: .line 592
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            invokevirtual sun.net.ftp.FtpClient.setBinaryType:()Lsun/net/ftp/FtpClient;
            pop
        19: .line 594
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new sun.net.www.protocol.ftp.FtpURLConnection$FtpOutputStream
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.ftp:Lsun/net/ftp/FtpClient;
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.filename:Ljava/lang/String;
            iconst_0
            invokevirtual sun.net.ftp.FtpClient.putFileStream:(Ljava/lang/String;Z)Ljava/io/OutputStream;
            invokespecial sun.net.www.protocol.ftp.FtpURLConnection$FtpOutputStream.<init>:(Lsun/net/www/protocol/ftp/FtpURLConnection;Lsun/net/ftp/FtpClient;Ljava/io/OutputStream;)V
            putfield sun.net.www.protocol.ftp.FtpURLConnection.os:Ljava/io/OutputStream;
        20: .line 595
            goto 23
      StackMap locals:
      StackMap stack: sun.net.ftp.FtpProtocolException
        21: astore 1 /* e */
        start local 1 // sun.net.ftp.FtpProtocolException e
        22: .line 596
            new java.io.IOException
            dup
            aload 1 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // sun.net.ftp.FtpProtocolException e
        23: .line 598
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.os:Ljava/io/OutputStream;
            areturn
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   24     0  this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            4    6     1   out  Ljava/io/OutputStream;
           22   23     1     e  Lsun/net/ftp/FtpProtocolException;
      Exception table:
        from    to  target  type
          13    20      21  Class sun.net.ftp.FtpProtocolException
    Exceptions:
      throws java.io.IOException

  java.lang.String guessContentTypeFromFilename(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
        start local 1 // java.lang.String fname
         0: .line 602
            aload 1 /* fname */
            invokestatic sun.net.www.protocol.ftp.FtpURLConnection.guessContentTypeFromName:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String fname
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            0    1     1  fname  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      fname  

  public java.security.Permission getPermission();
    descriptor: ()Ljava/security/Permission;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
         0: .line 612
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.permission:Ljava/security/Permission;
            ifnonnull 7
         1: .line 613
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.url:Ljava/net/URL;
            invokevirtual java.net.URL.getPort:()I
            istore 1 /* urlport */
        start local 1 // int urlport
         2: .line 614
            iload 1 /* urlport */
            ifge 3
            invokestatic sun.net.ftp.FtpClient.defaultPort:()I
            goto 4
      StackMap locals: int
      StackMap stack:
         3: iload 1 /* urlport */
      StackMap locals:
      StackMap stack: int
         4: istore 1 /* urlport */
         5: .line 615
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.host:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* urlport */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* urlhost */
        start local 2 // java.lang.String urlhost
         6: .line 616
            aload 0 /* this */
            new java.net.SocketPermission
            dup
            aload 2 /* urlhost */
            ldc "connect"
            invokespecial java.net.SocketPermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            putfield sun.net.www.protocol.ftp.FtpURLConnection.permission:Ljava/security/Permission;
        end local 2 // java.lang.String urlhost
        end local 1 // int urlport
         7: .line 618
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.permission:Ljava/security/Permission;
            areturn
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            2    7     1  urlport  I
            6    7     2  urlhost  Ljava/lang/String;

  public void setRequestProperty(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
        start local 1 // java.lang.String key
        start local 2 // java.lang.String value
         0: .line 633
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* value */
            invokespecial sun.net.www.URLConnection.setRequestProperty:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 634
            ldc "type"
            aload 1 /* key */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
         2: .line 635
            ldc "i"
            aload 2 /* value */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 5
         3: .line 636
            aload 0 /* this */
            iconst_2
            putfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
         4: .line 637
            goto 17
      StackMap locals:
      StackMap stack:
         5: ldc "a"
            aload 2 /* value */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 8
         6: .line 638
            aload 0 /* this */
            iconst_1
            putfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
         7: .line 639
            goto 17
      StackMap locals:
      StackMap stack:
         8: ldc "d"
            aload 2 /* value */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 11
         9: .line 640
            aload 0 /* this */
            iconst_3
            putfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
        10: .line 641
            goto 17
        11: .line 642
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
        12: .line 643
            new java.lang.StringBuilder
            dup
            ldc "Value of '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        13: .line 644
            ldc "' request property was '"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        14: .line 645
            ldc "' when it must be either 'i', 'a' or 'd'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        15: .line 643
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 642
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 648
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String value
        end local 1 // java.lang.String key
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   18     0   this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            0   18     1    key  Ljava/lang/String;
            0   18     2  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      key    
      value  

  public java.lang.String getRequestProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
        start local 1 // java.lang.String key
         0: .line 662
            aload 0 /* this */
            aload 1 /* key */
            invokespecial sun.net.www.URLConnection.getRequestProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* value */
        start local 2 // java.lang.String value
         1: .line 664
            aload 2 /* value */
            ifnonnull 7
         2: .line 665
            ldc "type"
            aload 1 /* key */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         3: .line 666
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
            iconst_1
            if_icmpne 4
            ldc "a"
            goto 6
      StackMap locals: java.lang.String
      StackMap stack:
         4: aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.type:I
            iconst_3
            if_icmpne 5
            ldc "d"
            goto 6
      StackMap locals:
      StackMap stack:
         5: ldc "i"
      StackMap locals:
      StackMap stack: java.lang.String
         6: astore 2 /* value */
         7: .line 670
      StackMap locals:
      StackMap stack:
            aload 2 /* value */
            areturn
        end local 2 // java.lang.String value
        end local 1 // java.lang.String key
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            0    8     1    key  Ljava/lang/String;
            1    8     2  value  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      key   

  public void setConnectTimeout(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
        start local 1 // int timeout
         0: .line 675
            iload 1 /* timeout */
            ifge 2
         1: .line 676
            new java.lang.IllegalArgumentException
            dup
            ldc "timeouts can't be negative"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 678
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* timeout */
            putfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
         3: .line 679
            return
        end local 1 // int timeout
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            0    4     1  timeout  I
    MethodParameters:
         Name  Flags
      timeout  

  public int getConnectTimeout();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
         0: .line 683
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
            ifge 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.connectTimeout:I
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/net/www/protocol/ftp/FtpURLConnection;

  public void setReadTimeout(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
        start local 1 // int timeout
         0: .line 688
            iload 1 /* timeout */
            ifge 2
         1: .line 689
            new java.lang.IllegalArgumentException
            dup
            ldc "timeouts can't be negative"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 691
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* timeout */
            putfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
         3: .line 692
            return
        end local 1 // int timeout
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lsun/net/www/protocol/ftp/FtpURLConnection;
            0    4     1  timeout  I
    MethodParameters:
         Name  Flags
      timeout  

  public int getReadTimeout();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
         0: .line 696
            aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
            ifge 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield sun.net.www.protocol.ftp.FtpURLConnection.readTimeout:I
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // sun.net.www.protocol.ftp.FtpURLConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/net/www/protocol/ftp/FtpURLConnection;
}
SourceFile: "FtpURLConnection.java"
NestMembers:
  sun.net.www.protocol.ftp.FtpURLConnection$1  sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream  sun.net.www.protocol.ftp.FtpURLConnection$FtpOutputStream
InnerClasses:
  public final Type = java.net.Proxy$Type of java.net.Proxy
  sun.net.www.protocol.ftp.FtpURLConnection$1
  protected FtpInputStream = sun.net.www.protocol.ftp.FtpURLConnection$FtpInputStream of sun.net.www.protocol.ftp.FtpURLConnection
  protected FtpOutputStream = sun.net.www.protocol.ftp.FtpURLConnection$FtpOutputStream of sun.net.www.protocol.ftp.FtpURLConnection