public class sun.rmi.server.UnicastRef implements java.rmi.server.RemoteRef
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.rmi.server.UnicastRef
  super_class: java.lang.Object
{
  public static final sun.rmi.runtime.Log clientRefLog;
    descriptor: Lsun/rmi/runtime/Log;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final sun.rmi.runtime.Log clientCallLog;
    descriptor: Lsun/rmi/runtime/Log;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  protected sun.rmi.transport.LiveRef ref;
    descriptor: Lsun/rmi/transport/LiveRef;
    flags: (0x0004) ACC_PROTECTED

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 58
            ldc "sun.rmi.client.ref"
            ldc "transport"
            getstatic sun.rmi.server.Util.logLevel:I
            invokestatic sun.rmi.runtime.Log.getLog:(Ljava/lang/String;Ljava/lang/String;I)Lsun/rmi/runtime/Log;
         1: .line 57
            putstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
         2: .line 64
            ldc "sun.rmi.client.call"
            ldc "RMI"
         3: .line 66
            new sun.security.action.GetBooleanAction
            dup
            ldc "sun.rmi.client.logCalls"
            invokespecial sun.security.action.GetBooleanAction.<init>:(Ljava/lang/String;)V
         4: .line 65
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
         5: .line 64
            invokestatic sun.rmi.runtime.Log.getLog:(Ljava/lang/String;Ljava/lang/String;Z)Lsun/rmi/runtime/Log;
         6: .line 63
            putstatic sun.rmi.server.UnicastRef.clientCallLog:Lsun/rmi/runtime/Log;
         7: .line 66
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.rmi.server.UnicastRef this
         0: .line 73
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 74
            return
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/rmi/server/UnicastRef;

  public void <init>(sun.rmi.transport.LiveRef);
    descriptor: (Lsun/rmi/transport/LiveRef;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // sun.rmi.transport.LiveRef liveRef
         0: .line 79
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 80
            aload 0 /* this */
            aload 1 /* liveRef */
            putfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
         2: .line 81
            return
        end local 1 // sun.rmi.transport.LiveRef liveRef
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lsun/rmi/server/UnicastRef;
            0    3     1  liveRef  Lsun/rmi/transport/LiveRef;
    MethodParameters:
         Name  Flags
      liveRef  

  public sun.rmi.transport.LiveRef getLiveRef();
    descriptor: ()Lsun/rmi/transport/LiveRef;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.rmi.server.UnicastRef this
         0: .line 92
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            areturn
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/server/UnicastRef;

  public java.lang.Object invoke(java.rmi.Remote, java.lang.reflect.Method, java.lang.Object[], long);
    descriptor: (Ljava/rmi/Remote;Ljava/lang/reflect/Method;[Ljava/lang/Object;J)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=16, args_size=5
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.rmi.Remote obj
        start local 2 // java.lang.reflect.Method method
        start local 3 // java.lang.Object[] params
        start local 4 // long opnum
         0: .line 119
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            invokevirtual sun.rmi.runtime.Log.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 2
         1: .line 120
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            new java.lang.StringBuilder
            dup
            ldc "method: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
         2: .line 123
      StackMap locals:
      StackMap stack:
            getstatic sun.rmi.server.UnicastRef.clientCallLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            invokevirtual sun.rmi.runtime.Log.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 4
         3: .line 124
            aload 0 /* this */
            aload 1 /* obj */
            aload 2 /* method */
            invokevirtual sun.rmi.server.UnicastRef.logClientCall:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getChannel:()Lsun/rmi/transport/Channel;
            invokeinterface sun.rmi.transport.Channel.newConnection:()Lsun/rmi/transport/Connection;
            astore 6 /* conn */
        start local 6 // sun.rmi.transport.Connection conn
         5: .line 128
            aconst_null
            astore 7 /* call */
        start local 7 // java.rmi.server.RemoteCall call
         6: .line 129
            iconst_1
            istore 8 /* reuse */
        start local 8 // boolean reuse
         7: .line 134
            iconst_0
            istore 9 /* alreadyFreed */
        start local 9 // boolean alreadyFreed
         8: .line 137
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            invokevirtual sun.rmi.runtime.Log.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 10
         9: .line 138
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            new java.lang.StringBuilder
            dup
            ldc "opnum = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 4 /* opnum */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
        10: .line 142
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.Remote java.lang.reflect.Method java.lang.Object[] long sun.rmi.transport.Connection java.rmi.server.RemoteCall int int
      StackMap stack:
            new sun.rmi.transport.StreamRemoteCall
            dup
            aload 6 /* conn */
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getObjID:()Ljava/rmi/server/ObjID;
            iconst_m1
            lload 4 /* opnum */
            invokespecial sun.rmi.transport.StreamRemoteCall.<init>:(Lsun/rmi/transport/Connection;Ljava/rmi/server/ObjID;IJ)V
            astore 7 /* call */
        11: .line 146
            aload 7 /* call */
            invokeinterface java.rmi.server.RemoteCall.getOutputStream:()Ljava/io/ObjectOutput;
            astore 10 /* out */
        start local 10 // java.io.ObjectOutput out
        12: .line 147
            aload 0 /* this */
            aload 10 /* out */
            invokevirtual sun.rmi.server.UnicastRef.marshalCustomCallData:(Ljava/io/ObjectOutput;)V
        13: .line 148
            aload 2 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            astore 11 /* types */
        start local 11 // java.lang.Class[] types
        14: .line 149
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        15: goto 18
        16: .line 150
      StackMap locals: java.io.ObjectOutput java.lang.Class[] int
      StackMap stack:
            aload 11 /* types */
            iload 12 /* i */
            aaload
            aload 3 /* params */
            iload 12 /* i */
            aaload
            aload 10 /* out */
            invokestatic sun.rmi.server.UnicastRef.marshalValue:(Ljava/lang/Class;Ljava/lang/Object;Ljava/io/ObjectOutput;)V
        17: .line 149
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 12 /* i */
            aload 11 /* types */
            arraylength
            if_icmplt 16
        end local 12 // int i
        end local 11 // java.lang.Class[] types
        end local 10 // java.io.ObjectOutput out
        19: .line 152
            goto 25
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.Remote java.lang.reflect.Method java.lang.Object[] long sun.rmi.transport.Connection java.rmi.server.RemoteCall int int
      StackMap stack: java.io.IOException
        20: astore 10 /* e */
        start local 10 // java.io.IOException e
        21: .line 153
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
        22: .line 154
            ldc "IOException marshalling arguments: "
            aload 10 /* e */
        23: .line 153
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        24: .line 155
            new java.rmi.MarshalException
            dup
            ldc "error marshalling arguments"
            aload 10 /* e */
            invokespecial java.rmi.MarshalException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 10 // java.io.IOException e
        25: .line 159
      StackMap locals:
      StackMap stack:
            aload 7 /* call */
            invokeinterface java.rmi.server.RemoteCall.executeCall:()V
        26: .line 162
            aload 2 /* method */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            astore 10 /* rtype */
        start local 10 // java.lang.Class rtype
        27: .line 163
            aload 10 /* rtype */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 39
        28: .line 201
            aload 7 /* call */
            invokeinterface java.rmi.server.RemoteCall.done:()V
        29: .line 202
            goto 32
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.Remote java.lang.reflect.Method java.lang.Object[] long sun.rmi.transport.Connection java.rmi.server.RemoteCall int int java.lang.Class
      StackMap stack: java.io.IOException
        30: pop
        31: .line 209
            iconst_0
            istore 8 /* reuse */
        32: .line 252
      StackMap locals:
      StackMap stack:
            iload 9 /* alreadyFreed */
            ifne 38
        33: .line 253
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            invokevirtual sun.rmi.runtime.Log.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 37
        34: .line 254
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            new java.lang.StringBuilder
            dup
            ldc "free connection (reuse = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        35: .line 255
            iload 8 /* reuse */
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        36: .line 254
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
        37: .line 257
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getChannel:()Lsun/rmi/transport/Channel;
            aload 6 /* conn */
            iload 8 /* reuse */
            invokeinterface sun.rmi.transport.Channel.free:(Lsun/rmi/transport/Connection;Z)V
        38: .line 164
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        39: .line 165
      StackMap locals:
      StackMap stack:
            aload 7 /* call */
            invokeinterface java.rmi.server.RemoteCall.getInputStream:()Ljava/io/ObjectInput;
            astore 11 /* in */
        start local 11 // java.io.ObjectInput in
        40: .line 172
            aload 10 /* rtype */
            aload 11 /* in */
            invokestatic sun.rmi.server.UnicastRef.unmarshalValue:(Ljava/lang/Class;Ljava/io/ObjectInput;)Ljava/lang/Object;
            astore 12 /* returnValue */
        start local 12 // java.lang.Object returnValue
        41: .line 177
            iconst_1
            istore 9 /* alreadyFreed */
        42: .line 180
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            ldc "free connection (reuse = true)"
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
        43: .line 183
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getChannel:()Lsun/rmi/transport/Channel;
            aload 6 /* conn */
            iconst_1
            invokeinterface sun.rmi.transport.Channel.free:(Lsun/rmi/transport/Connection;Z)V
        44: .line 185
            aload 12 /* returnValue */
            astore 14
        45: .line 201
            aload 7 /* call */
            invokeinterface java.rmi.server.RemoteCall.done:()V
        46: .line 202
            goto 49
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.Remote java.lang.reflect.Method java.lang.Object[] long sun.rmi.transport.Connection java.rmi.server.RemoteCall int int java.lang.Class java.io.ObjectInput java.lang.Object top java.lang.Object
      StackMap stack: java.io.IOException
        47: pop
        48: .line 209
            iconst_0
            istore 8 /* reuse */
        49: .line 252
      StackMap locals:
      StackMap stack:
            iload 9 /* alreadyFreed */
            ifne 55
        50: .line 253
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            invokevirtual sun.rmi.runtime.Log.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 54
        51: .line 254
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            new java.lang.StringBuilder
            dup
            ldc "free connection (reuse = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        52: .line 255
            iload 8 /* reuse */
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        53: .line 254
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
        54: .line 257
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getChannel:()Lsun/rmi/transport/Channel;
            aload 6 /* conn */
            iload 8 /* reuse */
            invokeinterface sun.rmi.transport.Channel.free:(Lsun/rmi/transport/Connection;Z)V
        55: .line 185
      StackMap locals:
      StackMap stack:
            aload 14
            areturn
        end local 12 // java.lang.Object returnValue
        end local 11 // java.io.ObjectInput in
        end local 10 // java.lang.Class rtype
        56: .line 187
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.Remote java.lang.reflect.Method java.lang.Object[] long sun.rmi.transport.Connection java.rmi.server.RemoteCall int int
      StackMap stack: java.io.IOException
            astore 10 /* e */
        start local 10 // java.io.IOException e
        57: .line 189
            aload 7 /* call */
            checkcast sun.rmi.transport.StreamRemoteCall
            invokevirtual sun.rmi.transport.StreamRemoteCall.discardPendingRefs:()V
        58: .line 190
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
        59: .line 191
            new java.lang.StringBuilder
            dup
            aload 10 /* e */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " unmarshalling return: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 10 /* e */
        60: .line 190
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        61: .line 192
            new java.rmi.UnmarshalException
            dup
            ldc "error unmarshalling return"
            aload 10 /* e */
            invokespecial java.rmi.UnmarshalException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 10 // java.io.IOException e
        62: .line 193
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 10 /* e */
        start local 10 // java.lang.ClassNotFoundException e
        63: .line 195
            aload 7 /* call */
            checkcast sun.rmi.transport.StreamRemoteCall
            invokevirtual sun.rmi.transport.StreamRemoteCall.discardPendingRefs:()V
        64: .line 196
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
        65: .line 197
            new java.lang.StringBuilder
            dup
            aload 10 /* e */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " unmarshalling return: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 10 /* e */
        66: .line 196
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        67: .line 198
            new java.rmi.UnmarshalException
            dup
            ldc "error unmarshalling return"
            aload 10 /* e */
            invokespecial java.rmi.UnmarshalException.<init>:(Ljava/lang/String;Ljava/lang/Exception;)V
            athrow
        end local 10 // java.lang.ClassNotFoundException e
        68: .line 199
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 13
        69: .line 201
            aload 7 /* call */
            invokeinterface java.rmi.server.RemoteCall.done:()V
        70: .line 202
            goto 73
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.Remote java.lang.reflect.Method java.lang.Object[] long sun.rmi.transport.Connection java.rmi.server.RemoteCall int int top top top java.lang.Throwable
      StackMap stack: java.io.IOException
        71: pop
        72: .line 209
            iconst_0
            istore 8 /* reuse */
        73: .line 211
      StackMap locals:
      StackMap stack:
            aload 13
            athrow
        74: .line 213
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.Remote java.lang.reflect.Method java.lang.Object[] long sun.rmi.transport.Connection java.rmi.server.RemoteCall int int
      StackMap stack: java.lang.RuntimeException
            astore 10 /* e */
        start local 10 // java.lang.RuntimeException e
        75: .line 222
            aload 7 /* call */
            ifnull 77
        76: .line 223
            aload 7 /* call */
            checkcast sun.rmi.transport.StreamRemoteCall
            invokevirtual sun.rmi.transport.StreamRemoteCall.getServerException:()Ljava/lang/Exception;
            aload 10 /* e */
            if_acmpeq 78
        77: .line 225
      StackMap locals: java.lang.RuntimeException
      StackMap stack:
            iconst_0
            istore 8 /* reuse */
        78: .line 227
      StackMap locals:
      StackMap stack:
            aload 10 /* e */
            athrow
        end local 10 // java.lang.RuntimeException e
        79: .line 229
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.Remote java.lang.reflect.Method java.lang.Object[] long sun.rmi.transport.Connection java.rmi.server.RemoteCall int int
      StackMap stack: java.rmi.RemoteException
            astore 10 /* e */
        start local 10 // java.rmi.RemoteException e
        80: .line 237
            iconst_0
            istore 8 /* reuse */
        81: .line 238
            aload 10 /* e */
            athrow
        end local 10 // java.rmi.RemoteException e
        82: .line 240
      StackMap locals:
      StackMap stack: java.lang.Error
            astore 10 /* e */
        start local 10 // java.lang.Error e
        83: .line 244
            iconst_0
            istore 8 /* reuse */
        84: .line 245
            aload 10 /* e */
            athrow
        end local 10 // java.lang.Error e
        85: .line 247
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 15
        86: .line 252
            iload 9 /* alreadyFreed */
            ifne 92
        87: .line 253
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            invokevirtual sun.rmi.runtime.Log.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 91
        88: .line 254
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            new java.lang.StringBuilder
            dup
            ldc "free connection (reuse = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        89: .line 255
            iload 8 /* reuse */
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        90: .line 254
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
        91: .line 257
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.Remote java.lang.reflect.Method java.lang.Object[] long sun.rmi.transport.Connection java.rmi.server.RemoteCall int int top top top top top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getChannel:()Lsun/rmi/transport/Channel;
            aload 6 /* conn */
            iload 8 /* reuse */
            invokeinterface sun.rmi.transport.Channel.free:(Lsun/rmi/transport/Connection;Z)V
        92: .line 259
      StackMap locals:
      StackMap stack:
            aload 15
            athrow
        end local 9 // boolean alreadyFreed
        end local 8 // boolean reuse
        end local 7 // java.rmi.server.RemoteCall call
        end local 6 // sun.rmi.transport.Connection conn
        end local 4 // long opnum
        end local 3 // java.lang.Object[] params
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.rmi.Remote obj
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   93     0          this  Lsun/rmi/server/UnicastRef;
            0   93     1           obj  Ljava/rmi/Remote;
            0   93     2        method  Ljava/lang/reflect/Method;
            0   93     3        params  [Ljava/lang/Object;
            0   93     4         opnum  J
            5   93     6          conn  Lsun/rmi/transport/Connection;
            6   93     7          call  Ljava/rmi/server/RemoteCall;
            7   93     8         reuse  Z
            8   93     9  alreadyFreed  Z
           12   19    10           out  Ljava/io/ObjectOutput;
           14   19    11         types  [Ljava/lang/Class;
           15   19    12             i  I
           21   25    10             e  Ljava/io/IOException;
           27   56    10         rtype  Ljava/lang/Class<*>;
           40   56    11            in  Ljava/io/ObjectInput;
           41   56    12   returnValue  Ljava/lang/Object;
           57   62    10             e  Ljava/io/IOException;
           63   68    10             e  Ljava/lang/ClassNotFoundException;
           75   79    10             e  Ljava/lang/RuntimeException;
           80   82    10             e  Ljava/rmi/RemoteException;
           83   85    10             e  Ljava/lang/Error;
      Exception table:
        from    to  target  type
          11    19      20  Class java.io.IOException
          28    29      30  Class java.io.IOException
          45    46      47  Class java.io.IOException
          26    28      56  Class java.io.IOException
          39    45      56  Class java.io.IOException
          26    28      62  Class java.lang.ClassNotFoundException
          39    45      62  Class java.lang.ClassNotFoundException
          26    28      68  any
          39    45      68  any
          56    68      68  any
          69    70      71  Class java.io.IOException
           8    32      74  Class java.lang.RuntimeException
          39    49      74  Class java.lang.RuntimeException
          56    74      74  Class java.lang.RuntimeException
           8    32      79  Class java.rmi.RemoteException
          39    49      79  Class java.rmi.RemoteException
          56    74      79  Class java.rmi.RemoteException
           8    32      82  Class java.lang.Error
          39    49      82  Class java.lang.Error
          56    74      82  Class java.lang.Error
           8    32      85  any
          39    49      85  any
          56    85      85  any
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
        Name  Flags
      obj     
      method  
      params  
      opnum   

  protected void marshalCustomCallData(java.io.ObjectOutput);
    descriptor: (Ljava/io/ObjectOutput;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.io.ObjectOutput out
         0: .line 263
            return
        end local 1 // java.io.ObjectOutput out
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/server/UnicastRef;
            0    1     1   out  Ljava/io/ObjectOutput;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      out   

  protected static void marshalValue(java.lang.Class<?>, , java.io.ObjectOutput);
    descriptor: (Ljava/lang/Class;Ljava/lang/Object;Ljava/io/ObjectOutput;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // java.lang.Class type
        start local 1 // java.lang.Object value
        start local 2 // java.io.ObjectOutput out
         0: .line 273
            aload 0 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 26
         1: .line 274
            aload 0 /* type */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpne 4
         2: .line 275
            aload 2 /* out */
            aload 1 /* value */
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            invokeinterface java.io.ObjectOutput.writeInt:(I)V
         3: .line 276
            goto 27
      StackMap locals:
      StackMap stack:
         4: aload 0 /* type */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpne 7
         5: .line 277
            aload 2 /* out */
            aload 1 /* value */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokeinterface java.io.ObjectOutput.writeBoolean:(Z)V
         6: .line 278
            goto 27
      StackMap locals:
      StackMap stack:
         7: aload 0 /* type */
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            if_acmpne 10
         8: .line 279
            aload 2 /* out */
            aload 1 /* value */
            checkcast java.lang.Byte
            invokevirtual java.lang.Byte.byteValue:()B
            invokeinterface java.io.ObjectOutput.writeByte:(I)V
         9: .line 280
            goto 27
      StackMap locals:
      StackMap stack:
        10: aload 0 /* type */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            if_acmpne 13
        11: .line 281
            aload 2 /* out */
            aload 1 /* value */
            checkcast java.lang.Character
            invokevirtual java.lang.Character.charValue:()C
            invokeinterface java.io.ObjectOutput.writeChar:(I)V
        12: .line 282
            goto 27
      StackMap locals:
      StackMap stack:
        13: aload 0 /* type */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            if_acmpne 16
        14: .line 283
            aload 2 /* out */
            aload 1 /* value */
            checkcast java.lang.Short
            invokevirtual java.lang.Short.shortValue:()S
            invokeinterface java.io.ObjectOutput.writeShort:(I)V
        15: .line 284
            goto 27
      StackMap locals:
      StackMap stack:
        16: aload 0 /* type */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpne 19
        17: .line 285
            aload 2 /* out */
            aload 1 /* value */
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            invokeinterface java.io.ObjectOutput.writeLong:(J)V
        18: .line 286
            goto 27
      StackMap locals:
      StackMap stack:
        19: aload 0 /* type */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpne 22
        20: .line 287
            aload 2 /* out */
            aload 1 /* value */
            checkcast java.lang.Float
            invokevirtual java.lang.Float.floatValue:()F
            invokeinterface java.io.ObjectOutput.writeFloat:(F)V
        21: .line 288
            goto 27
      StackMap locals:
      StackMap stack:
        22: aload 0 /* type */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpne 25
        23: .line 289
            aload 2 /* out */
            aload 1 /* value */
            checkcast java.lang.Double
            invokevirtual java.lang.Double.doubleValue:()D
            invokeinterface java.io.ObjectOutput.writeDouble:(D)V
        24: .line 290
            goto 27
        25: .line 291
      StackMap locals:
      StackMap stack:
            new java.lang.Error
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unrecognized primitive type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* type */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 294
      StackMap locals:
      StackMap stack:
            aload 2 /* out */
            aload 1 /* value */
            invokeinterface java.io.ObjectOutput.writeObject:(Ljava/lang/Object;)V
        27: .line 296
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.io.ObjectOutput out
        end local 1 // java.lang.Object value
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   28     0   type  Ljava/lang/Class<*>;
            0   28     1  value  Ljava/lang/Object;
            0   28     2    out  Ljava/io/ObjectOutput;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Object;Ljava/io/ObjectOutput;)V
    MethodParameters:
       Name  Flags
      type   
      value  
      out    

  protected static  unmarshalValue(java.lang.Class<?>, java.io.ObjectInput);
    descriptor: (Ljava/lang/Class;Ljava/io/ObjectInput;)Ljava/lang/Object;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // java.io.ObjectInput in
         0: .line 305
            aload 0 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 18
         1: .line 306
            aload 0 /* type */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpne 3
         2: .line 307
            aload 1 /* in */
            invokeinterface java.io.ObjectInput.readInt:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            areturn
         3: .line 308
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpne 5
         4: .line 309
            aload 1 /* in */
            invokeinterface java.io.ObjectInput.readBoolean:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
         5: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            if_acmpne 7
         6: .line 311
            aload 1 /* in */
            invokeinterface java.io.ObjectInput.readByte:()B
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            areturn
         7: .line 312
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            if_acmpne 9
         8: .line 313
            aload 1 /* in */
            invokeinterface java.io.ObjectInput.readChar:()C
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            areturn
         9: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            if_acmpne 11
        10: .line 315
            aload 1 /* in */
            invokeinterface java.io.ObjectInput.readShort:()S
            invokestatic java.lang.Short.valueOf:(S)Ljava/lang/Short;
            areturn
        11: .line 316
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpne 13
        12: .line 317
            aload 1 /* in */
            invokeinterface java.io.ObjectInput.readLong:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            areturn
        13: .line 318
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpne 15
        14: .line 319
            aload 1 /* in */
            invokeinterface java.io.ObjectInput.readFloat:()F
            invokestatic java.lang.Float.valueOf:(F)Ljava/lang/Float;
            areturn
        15: .line 320
      StackMap locals:
      StackMap stack:
            aload 0 /* type */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpne 17
        16: .line 321
            aload 1 /* in */
            invokeinterface java.io.ObjectInput.readDouble:()D
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            areturn
        17: .line 323
      StackMap locals:
      StackMap stack:
            new java.lang.Error
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unrecognized primitive type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* type */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 326
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            invokeinterface java.io.ObjectInput.readObject:()Ljava/lang/Object;
            areturn
        end local 1 // java.io.ObjectInput in
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  type  Ljava/lang/Class<*>;
            0   19     1    in  Ljava/io/ObjectInput;
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    Signature: (Ljava/lang/Class<*>;Ljava/io/ObjectInput;)Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      type  
      in    

  public java.rmi.server.RemoteCall newCall(java.rmi.server.RemoteObject, java.rmi.server.Operation[], int, long);
    descriptor: (Ljava/rmi/server/RemoteObject;[Ljava/rmi/server/Operation;IJ)Ljava/rmi/server/RemoteCall;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=5
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.rmi.server.RemoteObject obj
        start local 2 // java.rmi.server.Operation[] ops
        start local 3 // int opnum
        start local 4 // long hash
         0: .line 340
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            ldc "get connection"
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
         1: .line 342
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getChannel:()Lsun/rmi/transport/Channel;
            invokeinterface sun.rmi.transport.Channel.newConnection:()Lsun/rmi/transport/Connection;
            astore 6 /* conn */
        start local 6 // sun.rmi.transport.Connection conn
         2: .line 344
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            ldc "create call context"
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
         3: .line 347
            getstatic sun.rmi.server.UnicastRef.clientCallLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            invokevirtual sun.rmi.runtime.Log.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 5
         4: .line 348
            aload 0 /* this */
            aload 1 /* obj */
            aload 2 /* ops */
            iload 3 /* opnum */
            aaload
            invokevirtual sun.rmi.server.UnicastRef.logClientCall:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 352
      StackMap locals: sun.rmi.transport.Connection
      StackMap stack:
            new sun.rmi.transport.StreamRemoteCall
            dup
            aload 6 /* conn */
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getObjID:()Ljava/rmi/server/ObjID;
            iload 3 /* opnum */
            lload 4 /* hash */
            invokespecial sun.rmi.transport.StreamRemoteCall.<init>:(Lsun/rmi/transport/Connection;Ljava/rmi/server/ObjID;IJ)V
         6: .line 351
            astore 7 /* call */
        start local 7 // java.rmi.server.RemoteCall call
         7: .line 354
            aload 0 /* this */
            aload 7 /* call */
            invokeinterface java.rmi.server.RemoteCall.getOutputStream:()Ljava/io/ObjectOutput;
            invokevirtual sun.rmi.server.UnicastRef.marshalCustomCallData:(Ljava/io/ObjectOutput;)V
         8: .line 355
            goto 11
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.server.RemoteObject java.rmi.server.Operation[] int long sun.rmi.transport.Connection java.rmi.server.RemoteCall
      StackMap stack: java.io.IOException
         9: pop
        10: .line 356
            new java.rmi.MarshalException
            dup
            ldc "error marshaling custom call data"
            invokespecial java.rmi.MarshalException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 359
      StackMap locals:
      StackMap stack:
            aload 7 /* call */
        12: areturn
        end local 7 // java.rmi.server.RemoteCall call
        13: .line 360
      StackMap locals: sun.rmi.server.UnicastRef java.rmi.server.RemoteObject java.rmi.server.Operation[] int long sun.rmi.transport.Connection
      StackMap stack: java.rmi.RemoteException
            astore 7 /* e */
        start local 7 // java.rmi.RemoteException e
        14: .line 361
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getChannel:()Lsun/rmi/transport/Channel;
            aload 6 /* conn */
            iconst_0
            invokeinterface sun.rmi.transport.Channel.free:(Lsun/rmi/transport/Connection;Z)V
        15: .line 362
            aload 7 /* e */
            athrow
        end local 7 // java.rmi.RemoteException e
        end local 6 // sun.rmi.transport.Connection conn
        end local 4 // long hash
        end local 3 // int opnum
        end local 2 // java.rmi.server.Operation[] ops
        end local 1 // java.rmi.server.RemoteObject obj
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   16     0   this  Lsun/rmi/server/UnicastRef;
            0   16     1    obj  Ljava/rmi/server/RemoteObject;
            0   16     2    ops  [Ljava/rmi/server/Operation;
            0   16     3  opnum  I
            0   16     4   hash  J
            2   16     6   conn  Lsun/rmi/transport/Connection;
            7   13     7   call  Ljava/rmi/server/RemoteCall;
           14   16     7      e  Ljava/rmi/RemoteException;
      Exception table:
        from    to  target  type
           7     8       9  Class java.io.IOException
           2    12      13  Class java.rmi.RemoteException
    Exceptions:
      throws java.rmi.RemoteException
    MethodParameters:
       Name  Flags
      obj    
      ops    
      opnum  
      hash   

  public void invoke(java.rmi.server.RemoteCall);
    descriptor: (Ljava/rmi/server/RemoteCall;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.rmi.server.RemoteCall call
         0: .line 377
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            ldc "execute call"
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
         1: .line 379
            aload 1 /* call */
            invokeinterface java.rmi.server.RemoteCall.executeCall:()V
         2: .line 381
            goto 19
      StackMap locals:
      StackMap stack: java.rmi.RemoteException
         3: astore 2 /* e */
        start local 2 // java.rmi.RemoteException e
         4: .line 385
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            ldc "exception: "
            aload 2 /* e */
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
         5: .line 386
            aload 0 /* this */
            aload 1 /* call */
            iconst_0
            invokevirtual sun.rmi.server.UnicastRef.free:(Ljava/rmi/server/RemoteCall;Z)V
         6: .line 387
            aload 2 /* e */
            athrow
        end local 2 // java.rmi.RemoteException e
         7: .line 389
      StackMap locals:
      StackMap stack: java.lang.Error
            astore 2 /* e */
        start local 2 // java.lang.Error e
         8: .line 393
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            ldc "error: "
            aload 2 /* e */
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
         9: .line 394
            aload 0 /* this */
            aload 1 /* call */
            iconst_0
            invokevirtual sun.rmi.server.UnicastRef.free:(Ljava/rmi/server/RemoteCall;Z)V
        10: .line 395
            aload 2 /* e */
            athrow
        end local 2 // java.lang.Error e
        11: .line 397
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            astore 2 /* e */
        start local 2 // java.lang.RuntimeException e
        12: .line 403
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            ldc "exception: "
            aload 2 /* e */
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        13: .line 404
            aload 0 /* this */
            aload 1 /* call */
            iconst_0
            invokevirtual sun.rmi.server.UnicastRef.free:(Ljava/rmi/server/RemoteCall;Z)V
        14: .line 405
            aload 2 /* e */
            athrow
        end local 2 // java.lang.RuntimeException e
        15: .line 407
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
        16: .line 412
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            ldc "exception: "
            aload 2 /* e */
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        17: .line 413
            aload 0 /* this */
            aload 1 /* call */
            iconst_1
            invokevirtual sun.rmi.server.UnicastRef.free:(Ljava/rmi/server/RemoteCall;Z)V
        18: .line 415
            aload 2 /* e */
            athrow
        end local 2 // java.lang.Exception e
        19: .line 424
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.rmi.server.RemoteCall call
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lsun/rmi/server/UnicastRef;
            0   20     1  call  Ljava/rmi/server/RemoteCall;
            4    7     2     e  Ljava/rmi/RemoteException;
            8   11     2     e  Ljava/lang/Error;
           12   15     2     e  Ljava/lang/RuntimeException;
           16   19     2     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     2       3  Class java.rmi.RemoteException
           0     2       7  Class java.lang.Error
           0     2      11  Class java.lang.RuntimeException
           0     2      15  Class java.lang.Exception
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      call  

  private void free(java.rmi.server.RemoteCall, boolean);
    descriptor: (Ljava/rmi/server/RemoteCall;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.rmi.server.RemoteCall call
        start local 2 // boolean reuse
         0: .line 430
            aload 1 /* call */
            checkcast sun.rmi.transport.StreamRemoteCall
            invokevirtual sun.rmi.transport.StreamRemoteCall.getConnection:()Lsun/rmi/transport/Connection;
            astore 3 /* conn */
        start local 3 // sun.rmi.transport.Connection conn
         1: .line 431
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getChannel:()Lsun/rmi/transport/Channel;
            aload 3 /* conn */
            iload 2 /* reuse */
            invokeinterface sun.rmi.transport.Channel.free:(Lsun/rmi/transport/Connection;Z)V
         2: .line 432
            return
        end local 3 // sun.rmi.transport.Connection conn
        end local 2 // boolean reuse
        end local 1 // java.rmi.server.RemoteCall call
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lsun/rmi/server/UnicastRef;
            0    3     1   call  Ljava/rmi/server/RemoteCall;
            0    3     2  reuse  Z
            1    3     3   conn  Lsun/rmi/transport/Connection;
    Exceptions:
      throws java.rmi.RemoteException
    MethodParameters:
       Name  Flags
      call   
      reuse  

  public void done(java.rmi.server.RemoteCall);
    descriptor: (Ljava/rmi/server/RemoteCall;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.rmi.server.RemoteCall call
         0: .line 445
            getstatic sun.rmi.server.UnicastRef.clientRefLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.BRIEF:Ljava/util/logging/Level;
            ldc "free connection (reuse = true)"
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
         1: .line 448
            aload 0 /* this */
            aload 1 /* call */
            iconst_1
            invokevirtual sun.rmi.server.UnicastRef.free:(Ljava/rmi/server/RemoteCall;Z)V
         2: .line 451
            aload 1 /* call */
            invokeinterface java.rmi.server.RemoteCall.done:()V
         3: .line 452
            goto 5
      StackMap locals:
      StackMap stack: java.io.IOException
         4: pop
         5: .line 459
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.rmi.server.RemoteCall call
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lsun/rmi/server/UnicastRef;
            0    6     1  call  Ljava/rmi/server/RemoteCall;
      Exception table:
        from    to  target  type
           2     3       4  Class java.io.IOException
    Exceptions:
      throws java.rmi.RemoteException
    MethodParameters:
      Name  Flags
      call  

  void logClientCall(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.lang.Object obj
        start local 2 // java.lang.Object method
         0: .line 466
            getstatic sun.rmi.server.UnicastRef.clientCallLog:Lsun/rmi/runtime/Log;
            getstatic sun.rmi.runtime.Log.VERBOSE:Ljava/util/logging/Level;
            new java.lang.StringBuilder
            dup
            ldc "outbound call: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         1: .line 467
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 468
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.getObjID:()Ljava/rmi/server/ObjID;
            invokevirtual java.rmi.server.ObjID.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 466
            invokevirtual sun.rmi.runtime.Log.log:(Ljava/util/logging/Level;Ljava/lang/String;)V
         4: .line 469
            return
        end local 2 // java.lang.Object method
        end local 1 // java.lang.Object obj
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lsun/rmi/server/UnicastRef;
            0    5     1     obj  Ljava/lang/Object;
            0    5     2  method  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      obj     
      method  

  public java.lang.String getRefClass(java.io.ObjectOutput);
    descriptor: (Ljava/io/ObjectOutput;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.io.ObjectOutput out
         0: .line 475
            ldc "UnicastRef"
            areturn
        end local 1 // java.io.ObjectOutput out
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/server/UnicastRef;
            0    1     1   out  Ljava/io/ObjectOutput;
    MethodParameters:
      Name  Flags
      out   

  public void writeExternal(java.io.ObjectOutput);
    descriptor: (Ljava/io/ObjectOutput;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.io.ObjectOutput out
         0: .line 482
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            aload 1 /* out */
            iconst_0
            invokevirtual sun.rmi.transport.LiveRef.write:(Ljava/io/ObjectOutput;Z)V
         1: .line 483
            return
        end local 1 // java.io.ObjectOutput out
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/rmi/server/UnicastRef;
            0    2     1   out  Ljava/io/ObjectOutput;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      out   

  public void readExternal(java.io.ObjectInput);
    descriptor: (Ljava/io/ObjectInput;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.io.ObjectInput in
         0: .line 493
            aload 0 /* this */
            aload 1 /* in */
            iconst_0
            invokestatic sun.rmi.transport.LiveRef.read:(Ljava/io/ObjectInput;Z)Lsun/rmi/transport/LiveRef;
            putfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
         1: .line 494
            return
        end local 1 // java.io.ObjectInput in
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/rmi/server/UnicastRef;
            0    2     1    in  Ljava/io/ObjectInput;
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    MethodParameters:
      Name  Flags
      in    

  public java.lang.String remoteToString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.rmi.server.UnicastRef this
         0: .line 501
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic sun.rmi.server.Util.getUnqualifiedName:(Ljava/lang/Class;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " [liveRef: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/server/UnicastRef;

  public int remoteHashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.rmi.server.UnicastRef this
         0: .line 508
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.hashCode:()I
            ireturn
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/server/UnicastRef;

  public boolean remoteEquals(java.rmi.server.RemoteRef);
    descriptor: (Ljava/rmi/server/RemoteRef;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.rmi.server.UnicastRef this
        start local 1 // java.rmi.server.RemoteRef sub
         0: .line 514
            aload 1 /* sub */
            instanceof sun.rmi.server.UnicastRef
            ifeq 2
         1: .line 515
            aload 0 /* this */
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            aload 1 /* sub */
            checkcast sun.rmi.server.UnicastRef
            getfield sun.rmi.server.UnicastRef.ref:Lsun/rmi/transport/LiveRef;
            invokevirtual sun.rmi.transport.LiveRef.remoteEquals:(Ljava/lang/Object;)Z
            ireturn
         2: .line 516
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.rmi.server.RemoteRef sub
        end local 0 // sun.rmi.server.UnicastRef this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/rmi/server/UnicastRef;
            0    3     1   sub  Ljava/rmi/server/RemoteRef;
    MethodParameters:
      Name  Flags
      sub   
}
SourceFile: "UnicastRef.java"