public class sun.rmi.log.ReliableLog
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.rmi.log.ReliableLog
  super_class: java.lang.Object
{
  public static final int PreferredMajorVersion;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int PreferredMinorVersion;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private boolean Debug;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private static java.lang.String snapshotPrefix;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.String logfilePrefix;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.String versionFile;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.String newVersionFile;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static int intBytes;
    descriptor: I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static long diskPageSize;
    descriptor: J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private java.io.File dir;
    descriptor: Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE

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

  private java.lang.String logName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private sun.rmi.log.ReliableLog$LogFile log;
    descriptor: Lsun/rmi/log/ReliableLog$LogFile;
    flags: (0x0002) ACC_PRIVATE

  private long snapshotBytes;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long logBytes;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

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

  private long lastSnapshot;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long lastLog;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private sun.rmi.log.LogHandler handler;
    descriptor: Lsun/rmi/log/LogHandler;
    flags: (0x0002) ACC_PRIVATE

  private final byte[] intBuf;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private static final java.lang.reflect.Constructor<? extends sun.rmi.log.ReliableLog$LogFile> logClassConstructor;
    descriptor: Ljava/lang/reflect/Constructor;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/reflect/Constructor<+Lsun/rmi/log/ReliableLog$LogFile;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 89
            ldc "Snapshot."
            putstatic sun.rmi.log.ReliableLog.snapshotPrefix:Ljava/lang/String;
         1: .line 90
            ldc "Logfile."
            putstatic sun.rmi.log.ReliableLog.logfilePrefix:Ljava/lang/String;
         2: .line 91
            ldc "Version_Number"
            putstatic sun.rmi.log.ReliableLog.versionFile:Ljava/lang/String;
         3: .line 92
            ldc "New_Version_Number"
            putstatic sun.rmi.log.ReliableLog.newVersionFile:Ljava/lang/String;
         4: .line 93
            iconst_4
            putstatic sun.rmi.log.ReliableLog.intBytes:I
         5: .line 94
            ldc 512
            putstatic sun.rmi.log.ReliableLog.diskPageSize:J
         6: .line 122
            invokestatic sun.rmi.log.ReliableLog.getLogClassConstructor:()Ljava/lang/reflect/Constructor;
            putstatic sun.rmi.log.ReliableLog.logClassConstructor:Ljava/lang/reflect/Constructor;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.String, sun.rmi.log.LogHandler, boolean);
    descriptor: (Ljava/lang/String;Lsun/rmi/log/LogHandler;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.String dirPath
        start local 2 // sun.rmi.log.LogHandler handler
        start local 3 // boolean pad
         0: .line 142
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 87
            aload 0 /* this */
            iconst_0
            putfield sun.rmi.log.ReliableLog.Debug:Z
         2: .line 97
            aload 0 /* this */
            iconst_0
            putfield sun.rmi.log.ReliableLog.version:I
         3: .line 98
            aload 0 /* this */
            aconst_null
            putfield sun.rmi.log.ReliableLog.logName:Ljava/lang/String;
         4: .line 99
            aload 0 /* this */
            aconst_null
            putfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
         5: .line 100
            aload 0 /* this */
            lconst_0
            putfield sun.rmi.log.ReliableLog.snapshotBytes:J
         6: .line 101
            aload 0 /* this */
            lconst_0
            putfield sun.rmi.log.ReliableLog.logBytes:J
         7: .line 102
            aload 0 /* this */
            iconst_0
            putfield sun.rmi.log.ReliableLog.logEntries:I
         8: .line 103
            aload 0 /* this */
            lconst_0
            putfield sun.rmi.log.ReliableLog.lastSnapshot:J
         9: .line 104
            aload 0 /* this */
            lconst_0
            putfield sun.rmi.log.ReliableLog.lastLog:J
        10: .line 107
            aload 0 /* this */
            iconst_4
            newarray 8
            putfield sun.rmi.log.ReliableLog.intBuf:[B
        11: .line 110
            aload 0 /* this */
            iconst_0
            putfield sun.rmi.log.ReliableLog.majorFormatVersion:I
        12: .line 111
            aload 0 /* this */
            iconst_0
            putfield sun.rmi.log.ReliableLog.minorFormatVersion:I
        13: .line 143
            aload 0 /* this */
        14: .line 144
            new sun.security.action.GetBooleanAction
            dup
            ldc "sun.rmi.log.debug"
            invokespecial sun.security.action.GetBooleanAction.<init>:(Ljava/lang/String;)V
        15: .line 143
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.Boolean
        16: .line 144
            invokevirtual java.lang.Boolean.booleanValue:()Z
        17: .line 143
            putfield sun.rmi.log.ReliableLog.Debug:Z
        18: .line 145
            aload 0 /* this */
            new java.io.File
            dup
            aload 1 /* dirPath */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            putfield sun.rmi.log.ReliableLog.dir:Ljava/io/File;
        19: .line 146
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.dir:Ljava/io/File;
            invokevirtual java.io.File.exists:()Z
            ifeq 20
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.dir:Ljava/io/File;
            invokevirtual java.io.File.isDirectory:()Z
            ifne 24
        20: .line 148
      StackMap locals: sun.rmi.log.ReliableLog java.lang.String sun.rmi.log.LogHandler int
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.dir:Ljava/io/File;
            invokevirtual java.io.File.mkdir:()Z
            ifne 24
        21: .line 149
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "could not create directory for log: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        22: .line 150
            aload 1 /* dirPath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 149
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        24: .line 154
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* handler */
            putfield sun.rmi.log.ReliableLog.handler:Lsun/rmi/log/LogHandler;
        25: .line 155
            aload 0 /* this */
            lconst_0
            putfield sun.rmi.log.ReliableLog.lastSnapshot:J
        26: .line 156
            aload 0 /* this */
            lconst_0
            putfield sun.rmi.log.ReliableLog.lastLog:J
        27: .line 157
            aload 0 /* this */
            invokevirtual sun.rmi.log.ReliableLog.getVersion:()V
        28: .line 158
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.version:I
            ifne 37
        29: .line 160
            aload 0 /* this */
            aload 2 /* handler */
            invokevirtual sun.rmi.log.LogHandler.initialSnapshot:()Ljava/lang/Object;
            invokevirtual sun.rmi.log.ReliableLog.snapshot:(Ljava/lang/Object;)V
        30: .line 161
            goto 37
      StackMap locals:
      StackMap stack: java.io.IOException
        31: astore 4 /* e */
        start local 4 // java.io.IOException e
        32: .line 162
            aload 4 /* e */
            athrow
        end local 4 // java.io.IOException e
        33: .line 163
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 4 /* e */
        start local 4 // java.lang.Exception e
        34: .line 164
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "initial snapshot failed with exception: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        35: .line 165
            aload 4 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        36: .line 164
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.Exception e
        37: .line 168
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean pad
        end local 2 // sun.rmi.log.LogHandler handler
        end local 1 // java.lang.String dirPath
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   38     0     this  Lsun/rmi/log/ReliableLog;
            0   38     1  dirPath  Ljava/lang/String;
            0   38     2  handler  Lsun/rmi/log/LogHandler;
            0   38     3      pad  Z
           32   33     4        e  Ljava/io/IOException;
           34   37     4        e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          29    30      31  Class java.io.IOException
          29    30      33  Class java.lang.Exception
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      dirPath  
      handler  
      pad      

  public void <init>(java.lang.String, sun.rmi.log.LogHandler);
    descriptor: (Ljava/lang/String;Lsun/rmi/log/LogHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.String dirPath
        start local 2 // sun.rmi.log.LogHandler handler
         0: .line 184
            aload 0 /* this */
            aload 1 /* dirPath */
            aload 2 /* handler */
            iconst_0
            invokespecial sun.rmi.log.ReliableLog.<init>:(Ljava/lang/String;Lsun/rmi/log/LogHandler;Z)V
         1: .line 185
            return
        end local 2 // sun.rmi.log.LogHandler handler
        end local 1 // java.lang.String dirPath
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lsun/rmi/log/ReliableLog;
            0    2     1  dirPath  Ljava/lang/String;
            0    2     2  handler  Lsun/rmi/log/LogHandler;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      dirPath  
      handler  

  public synchronized java.lang.Object recover();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 202
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 2
         1: .line 203
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "log.debug: recover()"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 205
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.version:I
            ifne 4
         3: .line 206
            aconst_null
            areturn
         4: .line 209
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.snapshotPrefix:Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.versionName:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* fname */
        start local 2 // java.lang.String fname
         5: .line 210
            new java.io.File
            dup
            aload 2 /* fname */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* snapshotFile */
        start local 3 // java.io.File snapshotFile
         6: .line 212
            new java.io.BufferedInputStream
            dup
            new java.io.FileInputStream
            dup
            aload 3 /* snapshotFile */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
         7: .line 211
            astore 4 /* in */
        start local 4 // java.io.InputStream in
         8: .line 214
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 10
         9: .line 215
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "log.debug: recovering from "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* fname */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        10: .line 219
      StackMap locals: sun.rmi.log.ReliableLog top java.lang.String java.io.File java.io.InputStream
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.handler:Lsun/rmi/log/LogHandler;
            aload 4 /* in */
            invokevirtual sun.rmi.log.LogHandler.recover:(Ljava/io/InputStream;)Ljava/lang/Object;
            astore 1 /* snapshot */
        start local 1 // java.lang.Object snapshot
        11: .line 221
            goto 20
        end local 1 // java.lang.Object snapshot
      StackMap locals:
      StackMap stack: java.io.IOException
        12: astore 5 /* e */
        start local 5 // java.io.IOException e
        13: .line 222
            aload 5 /* e */
            athrow
        end local 5 // java.io.IOException e
        14: .line 223
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 5 /* e */
        start local 5 // java.lang.Exception e
        15: .line 224
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 17
        16: .line 225
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "log.debug: recovery failed: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        17: .line 226
      StackMap locals: java.lang.Exception
      StackMap stack:
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "log recover failed with exception: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        18: .line 227
            aload 5 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 226
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.Exception e
        start local 1 // java.lang.Object snapshot
        20: .line 229
      StackMap locals: sun.rmi.log.ReliableLog java.lang.Object java.lang.String java.io.File java.io.InputStream
      StackMap stack:
            aload 0 /* this */
            aload 3 /* snapshotFile */
            invokevirtual java.io.File.length:()J
            putfield sun.rmi.log.ReliableLog.snapshotBytes:J
        21: .line 230
            goto 25
        end local 1 // java.lang.Object snapshot
      StackMap locals: sun.rmi.log.ReliableLog top java.lang.String java.io.File java.io.InputStream
      StackMap stack: java.lang.Throwable
        22: astore 6
        23: .line 231
            aload 4 /* in */
            invokevirtual java.io.InputStream.close:()V
        24: .line 232
            aload 6
            athrow
        start local 1 // java.lang.Object snapshot
        25: .line 231
      StackMap locals: sun.rmi.log.ReliableLog java.lang.Object java.lang.String java.io.File java.io.InputStream
      StackMap stack:
            aload 4 /* in */
            invokevirtual java.io.InputStream.close:()V
        26: .line 234
            aload 0 /* this */
            aload 1 /* snapshot */
            invokevirtual sun.rmi.log.ReliableLog.recoverUpdates:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 4 // java.io.InputStream in
        end local 3 // java.io.File snapshotFile
        end local 2 // java.lang.String fname
        end local 1 // java.lang.Object snapshot
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   27     0          this  Lsun/rmi/log/ReliableLog;
           11   12     1      snapshot  Ljava/lang/Object;
           20   22     1      snapshot  Ljava/lang/Object;
           25   27     1      snapshot  Ljava/lang/Object;
            5   27     2         fname  Ljava/lang/String;
            6   27     3  snapshotFile  Ljava/io/File;
            8   27     4            in  Ljava/io/InputStream;
           13   14     5             e  Ljava/io/IOException;
           15   20     5             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          10    11      12  Class java.io.IOException
          10    11      14  Class java.lang.Exception
          10    22      22  any
    Exceptions:
      throws java.io.IOException

  public synchronized void update(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.Object value
         0: .line 248
            aload 0 /* this */
            aload 1 /* value */
            iconst_1
            invokevirtual sun.rmi.log.ReliableLog.update:(Ljava/lang/Object;Z)V
         1: .line 249
            return
        end local 1 // java.lang.Object value
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lsun/rmi/log/ReliableLog;
            0    2     1  value  Ljava/lang/Object;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      value  

  public synchronized void update(java.lang.Object, boolean);
    descriptor: (Ljava/lang/Object;Z)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.Object value
        start local 2 // boolean forceToDisk
         0: .line 267
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            ifnonnull 2
         1: .line 268
            new java.io.IOException
            dup
            ldc "log is inaccessible, it may have been corrupted or closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 277
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            invokevirtual sun.rmi.log.ReliableLog$LogFile.getFilePointer:()J
            lstore 3 /* entryStart */
        start local 3 // long entryStart
         3: .line 278
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            lload 3 /* entryStart */
            invokevirtual sun.rmi.log.ReliableLog$LogFile.checkSpansBoundary:(J)Z
            istore 5 /* spansBoundary */
        start local 5 // boolean spansBoundary
         4: .line 279
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            iload 5 /* spansBoundary */
            ifeq 5
            ldc -2147483648
            goto 6
      StackMap locals: sun.rmi.log.ReliableLog java.lang.Object int long int
      StackMap stack: sun.rmi.log.ReliableLog sun.rmi.log.ReliableLog$LogFile
         5: iconst_0
      StackMap locals: sun.rmi.log.ReliableLog java.lang.Object int long int
      StackMap stack: sun.rmi.log.ReliableLog sun.rmi.log.ReliableLog$LogFile int
         6: invokevirtual sun.rmi.log.ReliableLog.writeInt:(Ljava/io/DataOutput;I)V
         7: .line 285
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.handler:Lsun/rmi/log/LogHandler;
            new sun.rmi.log.LogOutputStream
            dup
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            invokespecial sun.rmi.log.LogOutputStream.<init>:(Ljava/io/RandomAccessFile;)V
            aload 1 /* value */
            invokevirtual sun.rmi.log.LogHandler.writeUpdate:(Lsun/rmi/log/LogOutputStream;Ljava/lang/Object;)V
         8: .line 286
            goto 14
      StackMap locals:
      StackMap stack: java.io.IOException
         9: astore 6 /* e */
        start local 6 // java.io.IOException e
        10: .line 287
            aload 6 /* e */
            athrow
        end local 6 // java.io.IOException e
        11: .line 288
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        12: .line 290
            new java.io.IOException
            dup
            ldc "write update failed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            aload 6 /* e */
            invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        13: .line 289
            checkcast java.io.IOException
            athrow
        end local 6 // java.lang.Exception e
        14: .line 292
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            invokevirtual sun.rmi.log.ReliableLog$LogFile.sync:()V
        15: .line 294
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            invokevirtual sun.rmi.log.ReliableLog$LogFile.getFilePointer:()J
            lstore 6 /* entryEnd */
        start local 6 // long entryEnd
        16: .line 295
            lload 6 /* entryEnd */
            lload 3 /* entryStart */
            lsub
            getstatic sun.rmi.log.ReliableLog.intBytes:I
            i2l
            lsub
            l2i
            istore 8 /* updateLen */
        start local 8 // int updateLen
        17: .line 296
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            lload 3 /* entryStart */
            invokevirtual sun.rmi.log.ReliableLog$LogFile.seek:(J)V
        18: .line 298
            iload 5 /* spansBoundary */
            ifeq 25
        19: .line 306
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            iload 8 /* updateLen */
            ldc -2147483648
            ior
            invokevirtual sun.rmi.log.ReliableLog.writeInt:(Ljava/io/DataOutput;I)V
        20: .line 307
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            invokevirtual sun.rmi.log.ReliableLog$LogFile.sync:()V
        21: .line 309
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            lload 3 /* entryStart */
            invokevirtual sun.rmi.log.ReliableLog$LogFile.seek:(J)V
        22: .line 310
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            iload 8 /* updateLen */
            bipush 24
            ishr
            invokevirtual sun.rmi.log.ReliableLog$LogFile.writeByte:(I)V
        23: .line 311
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            invokevirtual sun.rmi.log.ReliableLog$LogFile.sync:()V
        24: .line 313
            goto 27
        25: .line 317
      StackMap locals: long int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            iload 8 /* updateLen */
            invokevirtual sun.rmi.log.ReliableLog.writeInt:(Ljava/io/DataOutput;I)V
        26: .line 318
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            invokevirtual sun.rmi.log.ReliableLog$LogFile.sync:()V
        27: .line 321
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            lload 6 /* entryEnd */
            invokevirtual sun.rmi.log.ReliableLog$LogFile.seek:(J)V
        28: .line 322
            aload 0 /* this */
            lload 6 /* entryEnd */
            putfield sun.rmi.log.ReliableLog.logBytes:J
        29: .line 323
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            putfield sun.rmi.log.ReliableLog.lastLog:J
        30: .line 324
            aload 0 /* this */
            dup
            getfield sun.rmi.log.ReliableLog.logEntries:I
            iconst_1
            iadd
            putfield sun.rmi.log.ReliableLog.logEntries:I
        31: .line 325
            return
        end local 8 // int updateLen
        end local 6 // long entryEnd
        end local 5 // boolean spansBoundary
        end local 3 // long entryStart
        end local 2 // boolean forceToDisk
        end local 1 // java.lang.Object value
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   32     0           this  Lsun/rmi/log/ReliableLog;
            0   32     1          value  Ljava/lang/Object;
            0   32     2    forceToDisk  Z
            3   32     3     entryStart  J
            4   32     5  spansBoundary  Z
           10   11     6              e  Ljava/io/IOException;
           12   14     6              e  Ljava/lang/Exception;
           16   32     6       entryEnd  J
           17   32     8      updateLen  I
      Exception table:
        from    to  target  type
           7     8       9  Class java.io.IOException
           7     8      11  Class java.lang.Exception
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      value        
      forceToDisk  

  private static java.lang.reflect.Constructor<? extends sun.rmi.log.ReliableLog$LogFile> getLogClassConstructor();
    descriptor: ()Ljava/lang/reflect/Constructor;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=0
         0: .line 337
            new sun.security.action.GetPropertyAction
            dup
            ldc "sun.rmi.log.class"
            invokespecial sun.security.action.GetPropertyAction.<init>:(Ljava/lang/String;)V
         1: .line 336
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 0 /* logClassName */
        start local 0 // java.lang.String logClassName
         2: .line 338
            aload 0 /* logClassName */
            ifnull 13
         3: .line 342
            new sun.rmi.log.ReliableLog$1
            dup
            invokespecial sun.rmi.log.ReliableLog$1.<init>:()V
         4: .line 341
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.ClassLoader
         5: .line 340
            astore 1 /* loader */
        start local 1 // java.lang.ClassLoader loader
         6: .line 348
            aload 1 /* loader */
            aload 0 /* logClassName */
            invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
            ldc Lsun/rmi/log/ReliableLog$LogFile;
            invokevirtual java.lang.Class.asSubclass:(Ljava/lang/Class;)Ljava/lang/Class;
         7: .line 347
            astore 2 /* cl */
        start local 2 // java.lang.Class cl
         8: .line 349
            aload 2 /* cl */
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/String;
            aastore
            dup
            iconst_1
            ldc Ljava/lang/String;
            aastore
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
         9: areturn
        end local 2 // java.lang.Class cl
        end local 1 // java.lang.ClassLoader loader
        10: .line 350
      StackMap locals: java.lang.String
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
        11: .line 351
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Exception occurred:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        12: .line 352
            aload 1 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        end local 1 // java.lang.Exception e
        13: .line 355
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.String logClassName
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            2   14     0  logClassName  Ljava/lang/String;
            6   10     1        loader  Ljava/lang/ClassLoader;
            8   10     2            cl  Ljava/lang/Class<+Lsun/rmi/log/ReliableLog$LogFile;>;
           11   13     1             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           3     9      10  Class java.lang.Exception
    Signature: ()Ljava/lang/reflect/Constructor<+Lsun/rmi/log/ReliableLog$LogFile;>;

  public synchronized void snapshot(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.Object value
         0: .line 370
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.version:I
            istore 2 /* oldVersion */
        start local 2 // int oldVersion
         1: .line 371
            aload 0 /* this */
            invokevirtual sun.rmi.log.ReliableLog.incrVersion:()V
         2: .line 373
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.snapshotPrefix:Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.versionName:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* fname */
        start local 3 // java.lang.String fname
         3: .line 374
            new java.io.File
            dup
            aload 3 /* fname */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 4 /* snapshotFile */
        start local 4 // java.io.File snapshotFile
         4: .line 375
            new java.io.FileOutputStream
            dup
            aload 4 /* snapshotFile */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            astore 5 /* out */
        start local 5 // java.io.FileOutputStream out
         5: .line 378
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.handler:Lsun/rmi/log/LogHandler;
            aload 5 /* out */
            aload 1 /* value */
            invokevirtual sun.rmi.log.LogHandler.snapshot:(Ljava/io/OutputStream;Ljava/lang/Object;)V
         6: .line 379
            goto 11
      StackMap locals: sun.rmi.log.ReliableLog java.lang.Object int java.lang.String java.io.File java.io.FileOutputStream
      StackMap stack: java.io.IOException
         7: astore 6 /* e */
        start local 6 // java.io.IOException e
         8: .line 380
            aload 6 /* e */
            athrow
        end local 6 // java.io.IOException e
         9: .line 381
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        10: .line 382
            new java.io.IOException
            dup
            ldc "snapshot failed"
            aload 6 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.Exception e
        11: .line 384
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            putfield sun.rmi.log.ReliableLog.lastSnapshot:J
        12: .line 385
            goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 7
        14: .line 386
            aload 5 /* out */
            invokevirtual java.io.FileOutputStream.close:()V
        15: .line 387
            aload 0 /* this */
            aload 4 /* snapshotFile */
            invokevirtual java.io.File.length:()J
            putfield sun.rmi.log.ReliableLog.snapshotBytes:J
        16: .line 388
            aload 7
            athrow
        17: .line 386
      StackMap locals:
      StackMap stack:
            aload 5 /* out */
            invokevirtual java.io.FileOutputStream.close:()V
        18: .line 387
            aload 0 /* this */
            aload 4 /* snapshotFile */
            invokevirtual java.io.File.length:()J
            putfield sun.rmi.log.ReliableLog.snapshotBytes:J
        19: .line 390
            aload 0 /* this */
            iconst_1
            invokevirtual sun.rmi.log.ReliableLog.openLogFile:(Z)V
        20: .line 391
            aload 0 /* this */
            iconst_1
            invokevirtual sun.rmi.log.ReliableLog.writeVersionFile:(Z)V
        21: .line 392
            aload 0 /* this */
            invokevirtual sun.rmi.log.ReliableLog.commitToNewVersion:()V
        22: .line 393
            aload 0 /* this */
            iload 2 /* oldVersion */
            invokevirtual sun.rmi.log.ReliableLog.deleteSnapshot:(I)V
        23: .line 394
            aload 0 /* this */
            iload 2 /* oldVersion */
            invokevirtual sun.rmi.log.ReliableLog.deleteLogFile:(I)V
        24: .line 395
            return
        end local 5 // java.io.FileOutputStream out
        end local 4 // java.io.File snapshotFile
        end local 3 // java.lang.String fname
        end local 2 // int oldVersion
        end local 1 // java.lang.Object value
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   25     0          this  Lsun/rmi/log/ReliableLog;
            0   25     1         value  Ljava/lang/Object;
            1   25     2    oldVersion  I
            3   25     3         fname  Ljava/lang/String;
            4   25     4  snapshotFile  Ljava/io/File;
            5   25     5           out  Ljava/io/FileOutputStream;
            8    9     6             e  Ljava/io/IOException;
           10   11     6             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           5     6       7  Class java.io.IOException
           5     6       9  Class java.lang.Exception
           5    13      13  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      value  

  public synchronized void close();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 404
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            ifnonnull 1
            return
         1: .line 406
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            invokevirtual sun.rmi.log.ReliableLog$LogFile.close:()V
         2: .line 407
            goto 6
      StackMap locals:
      StackMap stack: java.lang.Throwable
         3: astore 1
         4: .line 408
            aload 0 /* this */
            aconst_null
            putfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
         5: .line 409
            aload 1
            athrow
         6: .line 408
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
         7: .line 410
            return
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lsun/rmi/log/ReliableLog;
      Exception table:
        from    to  target  type
           1     3       3  any
    Exceptions:
      throws java.io.IOException

  public long snapshotSize();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 416
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.snapshotBytes:J
            lreturn
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/log/ReliableLog;

  public long logSize();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 423
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.logBytes:J
            lreturn
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/log/ReliableLog;

  private void writeInt(java.io.DataOutput, int);
    descriptor: (Ljava/io/DataOutput;I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.io.DataOutput out
        start local 2 // int val
         0: .line 439
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.intBuf:[B
            iconst_0
            iload 2 /* val */
            bipush 24
            ishr
            i2b
            bastore
         1: .line 440
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.intBuf:[B
            iconst_1
            iload 2 /* val */
            bipush 16
            ishr
            i2b
            bastore
         2: .line 441
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.intBuf:[B
            iconst_2
            iload 2 /* val */
            bipush 8
            ishr
            i2b
            bastore
         3: .line 442
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.intBuf:[B
            iconst_3
            iload 2 /* val */
            i2b
            bastore
         4: .line 443
            aload 1 /* out */
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.intBuf:[B
            invokeinterface java.io.DataOutput.write:([B)V
         5: .line 444
            return
        end local 2 // int val
        end local 1 // java.io.DataOutput out
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lsun/rmi/log/ReliableLog;
            0    6     1   out  Ljava/io/DataOutput;
            0    6     2   val  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      out   
      val   

  private java.lang.String fName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.String name
         0: .line 452
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.dir:Ljava/io/File;
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.String name
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/log/ReliableLog;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  private java.lang.String versionName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.String name
         0: .line 462
            aload 0 /* this */
            aload 1 /* name */
            iconst_0
            invokevirtual sun.rmi.log.ReliableLog.versionName:(Ljava/lang/String;I)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String name
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/log/ReliableLog;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  private java.lang.String versionName(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.String prefix
        start local 2 // int ver
         0: .line 473
            iload 2 /* ver */
            ifne 1
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.version:I
            goto 2
      StackMap locals:
      StackMap stack:
         1: iload 2 /* ver */
      StackMap locals:
      StackMap stack: int
         2: istore 2 /* ver */
         3: .line 474
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            aload 1 /* prefix */
            invokevirtual sun.rmi.log.ReliableLog.fName:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* ver */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // int ver
        end local 1 // java.lang.String prefix
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lsun/rmi/log/ReliableLog;
            0    4     1  prefix  Ljava/lang/String;
            0    4     2     ver  I
    MethodParameters:
        Name  Flags
      prefix  
      ver     

  private void incrVersion();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 481
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield sun.rmi.log.ReliableLog.version:I
            iconst_1
            iadd
            putfield sun.rmi.log.ReliableLog.version:I
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.version:I
            ifeq 0
         1: .line 482
            return
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/rmi/log/ReliableLog;

  private void deleteFile(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.String name
         0: .line 492
            new java.io.File
            dup
            aload 1 /* name */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 2 /* f */
        start local 2 // java.io.File f
         1: .line 493
            aload 2 /* f */
            invokevirtual java.io.File.delete:()Z
            ifne 3
         2: .line 494
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "couldn't remove file: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 495
      StackMap locals: java.io.File
      StackMap stack:
            return
        end local 2 // java.io.File f
        end local 1 // java.lang.String name
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/rmi/log/ReliableLog;
            0    4     1  name  Ljava/lang/String;
            1    4     2     f  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      name  

  private void deleteNewVersionFile();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 503
            aload 0 /* this */
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.newVersionFile:Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.fName:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.deleteFile:(Ljava/lang/String;)V
         1: .line 504
            return
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/rmi/log/ReliableLog;
    Exceptions:
      throws java.io.IOException

  private void deleteSnapshot(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // int ver
         0: .line 513
            iload 1 /* ver */
            ifne 1
            return
         1: .line 514
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.snapshotPrefix:Ljava/lang/String;
            iload 1 /* ver */
            invokevirtual sun.rmi.log.ReliableLog.versionName:(Ljava/lang/String;I)Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.deleteFile:(Ljava/lang/String;)V
         2: .line 515
            return
        end local 1 // int ver
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/rmi/log/ReliableLog;
            0    3     1   ver  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      ver   

  private void deleteLogFile(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // int ver
         0: .line 524
            iload 1 /* ver */
            ifne 1
            return
         1: .line 525
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.logfilePrefix:Ljava/lang/String;
            iload 1 /* ver */
            invokevirtual sun.rmi.log.ReliableLog.versionName:(Ljava/lang/String;I)Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.deleteFile:(Ljava/lang/String;)V
         2: .line 526
            return
        end local 1 // int ver
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/rmi/log/ReliableLog;
            0    3     1   ver  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      ver   

  private void openLogFile(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // boolean truncate
         0: .line 538
            aload 0 /* this */
            invokevirtual sun.rmi.log.ReliableLog.close:()V
         1: .line 539
            goto 3
      StackMap locals:
      StackMap stack: java.io.IOException
         2: pop
         3: .line 542
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.logfilePrefix:Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.versionName:(Ljava/lang/String;)Ljava/lang/String;
            putfield sun.rmi.log.ReliableLog.logName:Ljava/lang/String;
         4: .line 545
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.logClassConstructor:Ljava/lang/reflect/Constructor;
            ifnonnull 6
         5: .line 546
            new sun.rmi.log.ReliableLog$LogFile
            dup
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.logName:Ljava/lang/String;
            ldc "rw"
            invokespecial sun.rmi.log.ReliableLog$LogFile.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            goto 7
         6: .line 547
      StackMap locals:
      StackMap stack: sun.rmi.log.ReliableLog
            getstatic sun.rmi.log.ReliableLog.logClassConstructor:Ljava/lang/reflect/Constructor;
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.logName:Ljava/lang/String;
            aastore
            dup
            iconst_1
            ldc "rw"
            aastore
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.rmi.log.ReliableLog$LogFile
         7: .line 545
      StackMap locals: sun.rmi.log.ReliableLog int
      StackMap stack: sun.rmi.log.ReliableLog sun.rmi.log.ReliableLog$LogFile
            putfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
         8: .line 548
            goto 15
      StackMap locals:
      StackMap stack: java.lang.Exception
         9: astore 2 /* e */
        start local 2 // java.lang.Exception e
        10: .line 549
            new java.io.IOException
            dup
        11: .line 550
            ldc "unable to construct LogFile instance"
        12: .line 549
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
        13: .line 550
            aload 2 /* e */
            invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        14: .line 549
            checkcast java.io.IOException
            athrow
        end local 2 // java.lang.Exception e
        15: .line 553
      StackMap locals:
      StackMap stack:
            iload 1 /* truncate */
            ifeq 17
        16: .line 554
            aload 0 /* this */
            invokevirtual sun.rmi.log.ReliableLog.initializeLogFile:()V
        17: .line 556
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean truncate
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   18     0      this  Lsun/rmi/log/ReliableLog;
            0   18     1  truncate  Z
           10   15     2         e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
           4     8       9  Class java.lang.Exception
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      truncate  

  private void initializeLogFile();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 574
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            lconst_0
            invokevirtual sun.rmi.log.ReliableLog$LogFile.setLength:(J)V
         1: .line 575
            aload 0 /* this */
            iconst_0
            putfield sun.rmi.log.ReliableLog.majorFormatVersion:I
         2: .line 576
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            iconst_0
            invokevirtual sun.rmi.log.ReliableLog.writeInt:(Ljava/io/DataOutput;I)V
         3: .line 577
            aload 0 /* this */
            iconst_2
            putfield sun.rmi.log.ReliableLog.minorFormatVersion:I
         4: .line 578
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            iconst_2
            invokevirtual sun.rmi.log.ReliableLog.writeInt:(Ljava/io/DataOutput;I)V
         5: .line 579
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.intBytes:I
            iconst_2
            imul
            i2l
            putfield sun.rmi.log.ReliableLog.logBytes:J
         6: .line 580
            aload 0 /* this */
            iconst_0
            putfield sun.rmi.log.ReliableLog.logEntries:I
         7: .line 581
            return
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lsun/rmi/log/ReliableLog;
    Exceptions:
      throws java.io.IOException

  private void writeVersionFile(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // boolean newVersion
         0: .line 592
            iload 1 /* newVersion */
            ifeq 3
         1: .line 593
            getstatic sun.rmi.log.ReliableLog.newVersionFile:Ljava/lang/String;
            astore 2 /* name */
        start local 2 // java.lang.String name
         2: .line 594
            goto 4
        end local 2 // java.lang.String name
         3: .line 595
      StackMap locals:
      StackMap stack:
            getstatic sun.rmi.log.ReliableLog.versionFile:Ljava/lang/String;
            astore 2 /* name */
        start local 2 // java.lang.String name
         4: .line 597
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            astore 3
            aconst_null
            astore 4
         5: new java.io.FileOutputStream
            dup
            aload 0 /* this */
            aload 2 /* name */
            invokevirtual sun.rmi.log.ReliableLog.fName:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.FileOutputStream.<init>:(Ljava/lang/String;)V
            astore 5 /* fos */
        start local 5 // java.io.FileOutputStream fos
         6: .line 598
            new java.io.DataOutputStream
            dup
            aload 5 /* fos */
            invokespecial java.io.DataOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 6 /* out */
        start local 6 // java.io.DataOutputStream out
         7: .line 599
            aload 0 /* this */
            aload 6 /* out */
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.version:I
            invokevirtual sun.rmi.log.ReliableLog.writeInt:(Ljava/io/DataOutput;I)V
         8: .line 600
            aload 6 /* out */
            ifnull 11
            aload 6 /* out */
            invokevirtual java.io.DataOutputStream.close:()V
            goto 11
      StackMap locals: sun.rmi.log.ReliableLog int java.lang.String java.lang.Throwable java.lang.Throwable java.io.FileOutputStream java.io.DataOutputStream
      StackMap stack: java.lang.Throwable
         9: astore 3
            aload 6 /* out */
            ifnull 10
            aload 6 /* out */
            invokevirtual java.io.DataOutputStream.close:()V
        end local 6 // java.io.DataOutputStream out
      StackMap locals:
      StackMap stack:
        10: aload 3
            athrow
      StackMap locals:
      StackMap stack:
        11: aload 5 /* fos */
            ifnull 19
            aload 5 /* fos */
            invokevirtual java.io.FileOutputStream.close:()V
            goto 19
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: astore 4
            aload 3
            ifnonnull 13
            aload 4
            astore 3
            goto 14
      StackMap locals:
      StackMap stack:
        13: aload 3
            aload 4
            if_acmpeq 14
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        14: aload 5 /* fos */
            ifnull 15
            aload 5 /* fos */
            invokevirtual java.io.FileOutputStream.close:()V
        end local 5 // java.io.FileOutputStream fos
      StackMap locals:
      StackMap stack:
        15: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: astore 4
            aload 3
            ifnonnull 17
            aload 4
            astore 3
            goto 18
      StackMap locals:
      StackMap stack:
        17: aload 3
            aload 4
            if_acmpeq 18
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        18: aload 3
            athrow
        19: .line 601
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String name
        end local 1 // boolean newVersion
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   20     0        this  Lsun/rmi/log/ReliableLog;
            0   20     1  newVersion  Z
            2    3     2        name  Ljava/lang/String;
            4   20     2        name  Ljava/lang/String;
            6   15     5         fos  Ljava/io/FileOutputStream;
            7   10     6         out  Ljava/io/DataOutputStream;
      Exception table:
        from    to  target  type
           7     8       9  any
           6    11      12  any
           5    16      16  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      newVersion  

  private void createFirstVersion();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 609
            aload 0 /* this */
            iconst_0
            putfield sun.rmi.log.ReliableLog.version:I
         1: .line 610
            aload 0 /* this */
            iconst_0
            invokevirtual sun.rmi.log.ReliableLog.writeVersionFile:(Z)V
         2: .line 611
            return
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/rmi/log/ReliableLog;
    Exceptions:
      throws java.io.IOException

  private void commitToNewVersion();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 619
            aload 0 /* this */
            iconst_0
            invokevirtual sun.rmi.log.ReliableLog.writeVersionFile:(Z)V
         1: .line 620
            aload 0 /* this */
            invokevirtual sun.rmi.log.ReliableLog.deleteNewVersionFile:()V
         2: .line 621
            return
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/rmi/log/ReliableLog;
    Exceptions:
      throws java.io.IOException

  private int readVersion(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.String name
         0: .line 631
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: new java.io.DataInputStream
            dup
         2: .line 632
            new java.io.FileInputStream
            dup
            aload 1 /* name */
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
         3: .line 631
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 4 /* in */
        start local 4 // java.io.DataInputStream in
         4: .line 633
            aload 4 /* in */
            invokevirtual java.io.DataInputStream.readInt:()I
         5: .line 634
            aload 4 /* in */
            ifnull 6
            aload 4 /* in */
            invokevirtual java.io.DataInputStream.close:()V
         6: .line 633
      StackMap locals: sun.rmi.log.ReliableLog java.lang.String java.lang.Throwable java.lang.Throwable java.io.DataInputStream
      StackMap stack: int
            ireturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 2
         8: .line 634
            aload 4 /* in */
            ifnull 9
            aload 4 /* in */
            invokevirtual java.io.DataInputStream.close:()V
        end local 4 // java.io.DataInputStream in
      StackMap locals:
      StackMap stack:
         9: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 3
            aload 2
            ifnonnull 11
            aload 3
            astore 2
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 2
            aload 3
            if_acmpeq 12
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 2
            athrow
        end local 1 // java.lang.String name
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lsun/rmi/log/ReliableLog;
            0   13     1  name  Ljava/lang/String;
            4    9     4    in  Ljava/io/DataInputStream;
      Exception table:
        from    to  target  type
           4     5       7  any
           1     6      10  any
           7    10      10  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      name  

  private void getVersion();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // sun.rmi.log.ReliableLog this
         0: .line 645
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.newVersionFile:Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.fName:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.readVersion:(Ljava/lang/String;)I
            putfield sun.rmi.log.ReliableLog.version:I
         1: .line 646
            aload 0 /* this */
            invokevirtual sun.rmi.log.ReliableLog.commitToNewVersion:()V
         2: .line 647
            goto 11
      StackMap locals:
      StackMap stack: java.io.IOException
         3: pop
         4: .line 649
            aload 0 /* this */
            invokevirtual sun.rmi.log.ReliableLog.deleteNewVersionFile:()V
         5: .line 650
            goto 7
         6: .line 651
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
         7: .line 655
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.versionFile:Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.fName:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.readVersion:(Ljava/lang/String;)I
            putfield sun.rmi.log.ReliableLog.version:I
         8: .line 656
            goto 11
         9: .line 657
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        10: .line 658
            aload 0 /* this */
            invokevirtual sun.rmi.log.ReliableLog.createFirstVersion:()V
        11: .line 661
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/rmi/log/ReliableLog;
      Exception table:
        from    to  target  type
           0     2       3  Class java.io.IOException
           4     5       6  Class java.io.IOException
           7     8       9  Class java.io.IOException
    Exceptions:
      throws java.io.IOException

  private java.lang.Object recoverUpdates(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // sun.rmi.log.ReliableLog this
        start local 1 // java.lang.Object state
         0: .line 675
            aload 0 /* this */
            lconst_0
            putfield sun.rmi.log.ReliableLog.logBytes:J
         1: .line 676
            aload 0 /* this */
            iconst_0
            putfield sun.rmi.log.ReliableLog.logEntries:I
         2: .line 678
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.version:I
            ifne 3
            aload 1 /* state */
            areturn
         3: .line 680
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic sun.rmi.log.ReliableLog.logfilePrefix:Ljava/lang/String;
            invokevirtual sun.rmi.log.ReliableLog.versionName:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* fname */
        start local 2 // java.lang.String fname
         4: .line 682
            new java.io.BufferedInputStream
            dup
            new java.io.FileInputStream
            dup
            aload 2 /* fname */
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
         5: .line 681
            astore 3 /* in */
        start local 3 // java.io.InputStream in
         6: .line 683
            new java.io.DataInputStream
            dup
            aload 3 /* in */
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 4 /* dataIn */
        start local 4 // java.io.DataInputStream dataIn
         7: .line 685
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 9
         8: .line 686
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "log.debug: reading updates from "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* fname */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 689
      StackMap locals: java.lang.String java.io.InputStream java.io.DataInputStream
      StackMap stack:
            aload 0 /* this */
            aload 4 /* dataIn */
            invokevirtual java.io.DataInputStream.readInt:()I
            putfield sun.rmi.log.ReliableLog.majorFormatVersion:I
            aload 0 /* this */
            dup
            getfield sun.rmi.log.ReliableLog.logBytes:J
            getstatic sun.rmi.log.ReliableLog.intBytes:I
            i2l
            ladd
            putfield sun.rmi.log.ReliableLog.logBytes:J
        10: .line 690
            aload 0 /* this */
            aload 4 /* dataIn */
            invokevirtual java.io.DataInputStream.readInt:()I
            putfield sun.rmi.log.ReliableLog.minorFormatVersion:I
            aload 0 /* this */
            dup
            getfield sun.rmi.log.ReliableLog.logBytes:J
            getstatic sun.rmi.log.ReliableLog.intBytes:I
            i2l
            ladd
            putfield sun.rmi.log.ReliableLog.logBytes:J
        11: .line 691
            goto 15
      StackMap locals:
      StackMap stack: java.io.EOFException
        12: pop
        13: .line 695
            aload 0 /* this */
            iconst_1
            invokevirtual sun.rmi.log.ReliableLog.openLogFile:(Z)V
        14: .line 696
            aconst_null
            astore 3 /* in */
        15: .line 704
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.majorFormatVersion:I
            ifeq 62
        16: .line 705
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 20
        17: .line 706
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "log.debug: major version mismatch: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        18: .line 707
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.majorFormatVersion:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.minorFormatVersion:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 706
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        20: .line 709
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Log file "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.logName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " has a "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 710
            ldc "version "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.majorFormatVersion:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        22: .line 711
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.minorFormatVersion:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        23: .line 712
            ldc " format, and this implementation "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        24: .line 713
            ldc " understands only version "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        25: .line 714
            iconst_0
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        26: .line 715
            iconst_2
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        27: .line 709
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        28: .line 720
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 5 /* updateLen */
        start local 5 // int updateLen
        29: .line 723
            aload 4 /* dataIn */
            invokevirtual java.io.DataInputStream.readInt:()I
            istore 5 /* updateLen */
        30: .line 724
            goto 35
      StackMap locals: sun.rmi.log.ReliableLog java.lang.Object java.lang.String java.io.InputStream java.io.DataInputStream int
      StackMap stack: java.io.EOFException
        31: pop
        32: .line 725
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 68
        33: .line 726
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "log.debug: log was sync'd cleanly"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        34: .line 727
            goto 68
        35: .line 729
      StackMap locals:
      StackMap stack:
            iload 5 /* updateLen */
            ifgt 43
        36: .line 730
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 68
        37: .line 731
            getstatic java.lang.System.err:Ljava/io/PrintStream;
        38: .line 732
            new java.lang.StringBuilder
            dup
            ldc "log.debug: last update incomplete, updateLen = 0x"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        39: .line 734
            iload 5 /* updateLen */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        40: .line 732
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        41: .line 731
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        42: .line 736
            goto 68
        43: .line 743
      StackMap locals:
      StackMap stack:
            aload 3 /* in */
            invokevirtual java.io.InputStream.available:()I
            iload 5 /* updateLen */
            if_icmpge 47
        44: .line 747
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 68
        45: .line 748
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "log.debug: log was truncated"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        46: .line 749
            goto 68
        47: .line 752
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 49
        48: .line 753
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "log.debug: rdUpdate size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* updateLen */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        49: .line 755
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.handler:Lsun/rmi/log/LogHandler;
            new sun.rmi.log.LogInputStream
            dup
            aload 3 /* in */
            iload 5 /* updateLen */
            invokespecial sun.rmi.log.LogInputStream.<init>:(Ljava/io/InputStream;I)V
        50: .line 756
            aload 1 /* state */
        51: .line 755
            invokevirtual sun.rmi.log.LogHandler.readUpdate:(Lsun/rmi/log/LogInputStream;Ljava/lang/Object;)Ljava/lang/Object;
            astore 1 /* state */
        52: .line 757
            goto 60
      StackMap locals:
      StackMap stack: java.io.IOException
        53: astore 6 /* e */
        start local 6 // java.io.IOException e
        54: .line 758
            aload 6 /* e */
            athrow
        end local 6 // java.io.IOException e
        55: .line 759
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        56: .line 760
            aload 6 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        57: .line 761
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "read update failed with exception: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        58: .line 762
            aload 6 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        59: .line 761
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.lang.Exception e
        60: .line 764
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield sun.rmi.log.ReliableLog.logBytes:J
            getstatic sun.rmi.log.ReliableLog.intBytes:I
            iload 5 /* updateLen */
            iadd
            i2l
            ladd
            putfield sun.rmi.log.ReliableLog.logBytes:J
        61: .line 765
            aload 0 /* this */
            dup
            getfield sun.rmi.log.ReliableLog.logEntries:I
            iconst_1
            iadd
            putfield sun.rmi.log.ReliableLog.logEntries:I
        end local 5 // int updateLen
        62: .line 719
      StackMap locals:
      StackMap stack:
            aload 3 /* in */
            ifnonnull 28
        63: .line 767
            goto 68
      StackMap locals:
      StackMap stack: java.lang.Throwable
        64: astore 7
        65: .line 768
            aload 3 /* in */
            ifnull 67
        66: .line 769
            aload 3 /* in */
            invokevirtual java.io.InputStream.close:()V
        67: .line 770
      StackMap locals: sun.rmi.log.ReliableLog java.lang.Object java.lang.String java.io.InputStream java.io.DataInputStream top top java.lang.Throwable
      StackMap stack:
            aload 7
            athrow
        68: .line 768
      StackMap locals: sun.rmi.log.ReliableLog java.lang.Object java.lang.String java.io.InputStream java.io.DataInputStream
      StackMap stack:
            aload 3 /* in */
            ifnull 70
        69: .line 769
            aload 3 /* in */
            invokevirtual java.io.InputStream.close:()V
        70: .line 772
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.Debug:Z
            ifeq 72
        71: .line 773
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "log.debug: recovered updates: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.logEntries:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        72: .line 776
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            invokevirtual sun.rmi.log.ReliableLog.openLogFile:(Z)V
        73: .line 779
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            ifnonnull 75
        74: .line 780
            new java.io.IOException
            dup
            ldc "rmid's log is inaccessible, it may have been corrupted or closed"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        75: .line 784
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.logBytes:J
            invokevirtual sun.rmi.log.ReliableLog$LogFile.seek:(J)V
        76: .line 785
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.log:Lsun/rmi/log/ReliableLog$LogFile;
            aload 0 /* this */
            getfield sun.rmi.log.ReliableLog.logBytes:J
            invokevirtual sun.rmi.log.ReliableLog$LogFile.setLength:(J)V
        77: .line 787
            aload 1 /* state */
            areturn
        end local 4 // java.io.DataInputStream dataIn
        end local 3 // java.io.InputStream in
        end local 2 // java.lang.String fname
        end local 1 // java.lang.Object state
        end local 0 // sun.rmi.log.ReliableLog this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   78     0       this  Lsun/rmi/log/ReliableLog;
            0   78     1      state  Ljava/lang/Object;
            4   78     2      fname  Ljava/lang/String;
            6   78     3         in  Ljava/io/InputStream;
            7   78     4     dataIn  Ljava/io/DataInputStream;
           29   62     5  updateLen  I
           54   55     6          e  Ljava/io/IOException;
           56   60     6          e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           9    11      12  Class java.io.EOFException
          29    30      31  Class java.io.EOFException
          49    52      53  Class java.io.IOException
          49    52      55  Class java.lang.Exception
          28    64      64  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      state  
}
SourceFile: "ReliableLog.java"
NestMembers:
  sun.rmi.log.ReliableLog$1  sun.rmi.log.ReliableLog$LogFile
InnerClasses:
  sun.rmi.log.ReliableLog$1
  public LogFile = sun.rmi.log.ReliableLog$LogFile of sun.rmi.log.ReliableLog