public class org.h2.tools.Shell extends org.h2.util.Tool implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.h2.tools.Shell
  super_class: org.h2.util.Tool
{
  private static final int MAX_ROW_BUFFER;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 5000

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

  private static final char BOX_VERTICAL;
    descriptor: C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 124

  private java.io.PrintStream err;
    descriptor: Ljava/io/PrintStream;
    flags: (0x0002) ACC_PRIVATE

  private java.io.InputStream in;
    descriptor: Ljava/io/InputStream;
    flags: (0x0002) ACC_PRIVATE

  private java.io.BufferedReader reader;
    descriptor: Ljava/io/BufferedReader;
    flags: (0x0002) ACC_PRIVATE

  private java.sql.Connection conn;
    descriptor: Ljava/sql/Connection;
    flags: (0x0002) ACC_PRIVATE

  private java.sql.Statement stat;
    descriptor: Ljava/sql/Statement;
    flags: (0x0002) ACC_PRIVATE

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

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

  private final java.util.ArrayList<java.lang.String> history;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayList<Ljava/lang/String;>;

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

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.h2.tools.Shell this
         0: .line 38
            aload 0 /* this */
            invokespecial org.h2.util.Tool.<init>:()V
         1: .line 45
            aload 0 /* this */
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            putfield org.h2.tools.Shell.err:Ljava/io/PrintStream;
         2: .line 46
            aload 0 /* this */
            getstatic java.lang.System.in:Ljava/io/InputStream;
            putfield org.h2.tools.Shell.in:Ljava/io/InputStream;
         3: .line 51
            aload 0 /* this */
            bipush 100
            putfield org.h2.tools.Shell.maxColumnSize:I
         4: .line 52
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.h2.tools.Shell.history:Ljava/util/ArrayList;
         5: .line 54
            aload 0 /* this */
            ldc "~"
            putfield org.h2.tools.Shell.serverPropertiesDir:Ljava/lang/String;
         6: .line 38
            return
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/h2/tools/Shell;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 81
            new org.h2.tools.Shell
            dup
            invokespecial org.h2.tools.Shell.<init>:()V
            aload 0 /* args */
            invokevirtual org.h2.tools.Shell.runTool:([Ljava/lang/String;)V
         1: .line 82
            return
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  args  [Ljava/lang/String;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      args  

  public void setErr(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.io.PrintStream err
         0: .line 90
            aload 0 /* this */
            aload 1 /* err */
            putfield org.h2.tools.Shell.err:Ljava/io/PrintStream;
         1: .line 91
            return
        end local 1 // java.io.PrintStream err
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/tools/Shell;
            0    2     1   err  Ljava/io/PrintStream;
    MethodParameters:
      Name  Flags
      err   

  public void setIn(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.io.InputStream in
         0: .line 99
            aload 0 /* this */
            aload 1 /* in */
            putfield org.h2.tools.Shell.in:Ljava/io/InputStream;
         1: .line 100
            return
        end local 1 // java.io.InputStream in
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/tools/Shell;
            0    2     1    in  Ljava/io/InputStream;
    MethodParameters:
      Name  Flags
      in    

  public void setInReader(java.io.BufferedReader);
    descriptor: (Ljava/io/BufferedReader;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.io.BufferedReader reader
         0: .line 108
            aload 0 /* this */
            aload 1 /* reader */
            putfield org.h2.tools.Shell.reader:Ljava/io/BufferedReader;
         1: .line 109
            return
        end local 1 // java.io.BufferedReader reader
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/h2/tools/Shell;
            0    2     1  reader  Ljava/io/BufferedReader;
    MethodParameters:
        Name  Flags
      reader  

  public void runTool(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.lang.String[] args
         0: .line 118
            aconst_null
            astore 2 /* url */
        start local 2 // java.lang.String url
         1: .line 119
            ldc ""
            astore 3 /* user */
        start local 3 // java.lang.String user
         2: .line 120
            ldc ""
            astore 4 /* password */
        start local 4 // java.lang.String password
         3: .line 121
            aconst_null
            astore 5 /* sql */
        start local 5 // java.lang.String sql
         4: .line 122
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 34
         6: .line 123
      StackMap locals: org.h2.tools.Shell java.lang.String[] java.lang.String java.lang.String java.lang.String java.lang.String int
      StackMap stack:
            aload 1 /* args */
            iload 6 /* i */
            aaload
            astore 7 /* arg */
        start local 7 // java.lang.String arg
         7: .line 124
            aload 7 /* arg */
            ldc "-url"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         8: .line 125
            aload 1 /* args */
            iinc 6 /* i */ 1
            iload 6 /* i */
            aaload
            astore 2 /* url */
         9: .line 126
            goto 33
      StackMap locals: java.lang.String
      StackMap stack:
        10: aload 7 /* arg */
            ldc "-user"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 13
        11: .line 127
            aload 1 /* args */
            iinc 6 /* i */ 1
            iload 6 /* i */
            aaload
            astore 3 /* user */
        12: .line 128
            goto 33
      StackMap locals:
      StackMap stack:
        13: aload 7 /* arg */
            ldc "-password"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
        14: .line 129
            aload 1 /* args */
            iinc 6 /* i */ 1
            iload 6 /* i */
            aaload
            astore 4 /* password */
        15: .line 130
            goto 33
      StackMap locals:
      StackMap stack:
        16: aload 7 /* arg */
            ldc "-driver"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 20
        17: .line 131
            aload 1 /* args */
            iinc 6 /* i */ 1
            iload 6 /* i */
            aaload
            astore 8 /* driver */
        start local 8 // java.lang.String driver
        18: .line 132
            aload 8 /* driver */
            invokestatic org.h2.util.JdbcUtils.loadUserClass:(Ljava/lang/String;)Ljava/lang/Class;
            pop
        end local 8 // java.lang.String driver
        19: .line 133
            goto 33
      StackMap locals:
      StackMap stack:
        20: aload 7 /* arg */
            ldc "-sql"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 23
        21: .line 134
            aload 1 /* args */
            iinc 6 /* i */ 1
            iload 6 /* i */
            aaload
            astore 5 /* sql */
        22: .line 135
            goto 33
      StackMap locals:
      StackMap stack:
        23: aload 7 /* arg */
            ldc "-properties"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        24: .line 136
            aload 0 /* this */
            aload 1 /* args */
            iinc 6 /* i */ 1
            iload 6 /* i */
            aaload
            putfield org.h2.tools.Shell.serverPropertiesDir:Ljava/lang/String;
        25: .line 137
            goto 33
      StackMap locals:
      StackMap stack:
        26: aload 7 /* arg */
            ldc "-help"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 27
            aload 7 /* arg */
            ldc "-?"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 29
        27: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.showUsage:()V
        28: .line 139
            return
        29: .line 140
      StackMap locals:
      StackMap stack:
            aload 7 /* arg */
            ldc "-list"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 32
        30: .line 141
            aload 0 /* this */
            iconst_1
            putfield org.h2.tools.Shell.listMode:Z
        31: .line 142
            goto 33
        32: .line 143
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* arg */
            invokevirtual org.h2.tools.Shell.showUsageAndThrowUnsupportedOption:(Ljava/lang/String;)Ljava/sql/SQLException;
            pop
        end local 7 // java.lang.String arg
        33: .line 122
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        34: aload 1 /* args */
            ifnull 35
            iload 6 /* i */
            aload 1 /* args */
            arraylength
            if_icmplt 6
        end local 6 // int i
        35: .line 146
      StackMap locals:
      StackMap stack:
            aload 2 /* url */
            ifnull 39
        36: .line 147
            invokestatic org.h2.Driver.load:()Lorg/h2/Driver;
            pop
        37: .line 148
            aload 0 /* this */
            aload 2 /* url */
            aload 3 /* user */
            aload 4 /* password */
            invokestatic java.sql.DriverManager.getConnection:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;
            putfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
        38: .line 149
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
            putfield org.h2.tools.Shell.stat:Ljava/sql/Statement;
        39: .line 151
      StackMap locals:
      StackMap stack:
            aload 5 /* sql */
            ifnonnull 42
        40: .line 152
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.promptLoop:()V
        41: .line 153
            goto 50
        42: .line 154
      StackMap locals:
      StackMap stack:
            new org.h2.util.ScriptReader
            dup
            new java.io.StringReader
            dup
            aload 5 /* sql */
            invokespecial java.io.StringReader.<init>:(Ljava/lang/String;)V
            invokespecial org.h2.util.ScriptReader.<init>:(Ljava/io/Reader;)V
            astore 6 /* r */
        start local 6 // org.h2.util.ScriptReader r
        43: .line 156
      StackMap locals: org.h2.util.ScriptReader
      StackMap stack:
            aload 6 /* r */
            invokevirtual org.h2.util.ScriptReader.readStatement:()Ljava/lang/String;
            astore 7 /* s */
        start local 7 // java.lang.String s
        44: .line 157
            aload 7 /* s */
            ifnonnull 46
        45: .line 158
            goto 48
        46: .line 160
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 7 /* s */
            invokevirtual org.h2.tools.Shell.execute:(Ljava/lang/String;)V
        end local 7 // java.lang.String s
        47: .line 155
            goto 43
        48: .line 162
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            ifnull 50
        49: .line 163
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            invokeinterface java.sql.Connection.close:()V
        end local 6 // org.h2.util.ScriptReader r
        50: .line 166
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.lang.String sql
        end local 4 // java.lang.String password
        end local 3 // java.lang.String user
        end local 2 // java.lang.String url
        end local 1 // java.lang.String[] args
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   51     0      this  Lorg/h2/tools/Shell;
            0   51     1      args  [Ljava/lang/String;
            1   51     2       url  Ljava/lang/String;
            2   51     3      user  Ljava/lang/String;
            3   51     4  password  Ljava/lang/String;
            4   51     5       sql  Ljava/lang/String;
            5   35     6         i  I
            7   33     7       arg  Ljava/lang/String;
           18   19     8    driver  Ljava/lang/String;
           43   50     6         r  Lorg/h2/util/ScriptReader;
           44   47     7         s  Ljava/lang/String;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      args  

  public void runTool(java.sql.Connection, java.lang.String[]);
    descriptor: (Ljava/sql/Connection;[Ljava/lang/String;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.sql.Connection conn
        start local 2 // java.lang.String[] args
         0: .line 181
            aload 0 /* this */
            aload 1 /* conn */
            putfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
         1: .line 182
            aload 0 /* this */
            aload 1 /* conn */
            invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
            putfield org.h2.tools.Shell.stat:Ljava/sql/Statement;
         2: .line 183
            aload 0 /* this */
            aload 2 /* args */
            invokevirtual org.h2.tools.Shell.runTool:([Ljava/lang/String;)V
         3: .line 184
            return
        end local 2 // java.lang.String[] args
        end local 1 // java.sql.Connection conn
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/h2/tools/Shell;
            0    4     1  conn  Ljava/sql/Connection;
            0    4     2  args  [Ljava/lang/String;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      conn  
      args  

  private void showHelp();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.tools.Shell this
         0: .line 187
            aload 0 /* this */
            ldc "Commands are case insensitive; SQL statements end with ';'"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         1: .line 188
            aload 0 /* this */
            ldc "help or ?      Display this help"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         2: .line 189
            aload 0 /* this */
            ldc "list           Toggle result list / stack trace mode"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         3: .line 190
            aload 0 /* this */
            ldc "maxwidth       Set maximum column width (default is 100)"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         4: .line 191
            aload 0 /* this */
            ldc "autocommit     Enable or disable autocommit"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         5: .line 192
            aload 0 /* this */
            ldc "history        Show the last 20 statements"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         6: .line 193
            aload 0 /* this */
            ldc "quit or exit   Close the connection and exit"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         7: .line 194
            aload 0 /* this */
            ldc ""
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         8: .line 195
            return
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/h2/tools/Shell;

  private void promptLoop();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=1
        start local 0 // org.h2.tools.Shell this
         0: .line 198
            aload 0 /* this */
            ldc ""
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         1: .line 199
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Welcome to H2 Shell "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic org.h2.engine.Constants.getFullVersion:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         2: .line 200
            aload 0 /* this */
            ldc "Exit with Ctrl+C"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
         3: .line 201
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            ifnull 5
         4: .line 202
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.showHelp:()V
         5: .line 204
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 1 /* statement */
        start local 1 // java.lang.String statement
         6: .line 205
            aload 0 /* this */
            getfield org.h2.tools.Shell.reader:Ljava/io/BufferedReader;
            ifnonnull 8
         7: .line 206
            aload 0 /* this */
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            aload 0 /* this */
            getfield org.h2.tools.Shell.in:Ljava/io/InputStream;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            putfield org.h2.tools.Shell.reader:Ljava/io/BufferedReader;
         8: .line 210
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            ifnonnull 11
         9: .line 211
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.connect:()V
        10: .line 212
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.showHelp:()V
        11: .line 214
      StackMap locals:
      StackMap stack:
            aload 1 /* statement */
            ifnonnull 14
        12: .line 215
            aload 0 /* this */
            ldc "sql> "
            invokevirtual org.h2.tools.Shell.print:(Ljava/lang/String;)V
        13: .line 216
            goto 15
        14: .line 217
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "...> "
            invokevirtual org.h2.tools.Shell.print:(Ljava/lang/String;)V
        15: .line 219
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.readLine:()Ljava/lang/String;
            astore 2 /* line */
        start local 2 // java.lang.String line
        16: .line 220
            aload 2 /* line */
            ifnonnull 18
        17: .line 221
            goto 105
        18: .line 223
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* line */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 3 /* trimmed */
        start local 3 // java.lang.String trimmed
        19: .line 224
            aload 3 /* trimmed */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 21
        20: .line 225
            goto 8
        21: .line 227
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* trimmed */
            ldc ";"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            istore 4 /* end */
        start local 4 // boolean end
        22: .line 228
            iload 4 /* end */
            ifeq 25
        23: .line 229
            aload 2 /* line */
            iconst_0
            aload 2 /* line */
            bipush 59
            invokevirtual java.lang.String.lastIndexOf:(I)I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* line */
        24: .line 230
            aload 3 /* trimmed */
            iconst_0
            aload 3 /* trimmed */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* trimmed */
        25: .line 232
      StackMap locals: int
      StackMap stack:
            aload 3 /* trimmed */
            invokestatic org.h2.util.StringUtils.toLowerEnglish:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* lower */
        start local 5 // java.lang.String lower
        26: .line 233
            ldc "exit"
            aload 5 /* lower */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 105
            ldc "quit"
            aload 5 /* lower */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 28
        27: .line 234
            goto 105
        28: .line 235
      StackMap locals: java.lang.String
      StackMap stack:
            ldc "help"
            aload 5 /* lower */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 29
            ldc "?"
            aload 5 /* lower */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 31
        29: .line 236
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.showHelp:()V
        30: .line 237
            goto 8
      StackMap locals:
      StackMap stack:
        31: ldc "list"
            aload 5 /* lower */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 39
        32: .line 238
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.tools.Shell.listMode:Z
            ifeq 33
            iconst_0
            goto 34
      StackMap locals:
      StackMap stack: org.h2.tools.Shell
        33: iconst_1
      StackMap locals: org.h2.tools.Shell java.lang.String java.lang.String java.lang.String int java.lang.String
      StackMap stack: org.h2.tools.Shell int
        34: putfield org.h2.tools.Shell.listMode:Z
        35: .line 239
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Result list mode is now "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.h2.tools.Shell.listMode:Z
            ifeq 36
            ldc "on"
            goto 37
      StackMap locals: org.h2.tools.Shell java.lang.String java.lang.String java.lang.String int java.lang.String
      StackMap stack: org.h2.tools.Shell java.lang.StringBuilder
        36: ldc "off"
      StackMap locals: org.h2.tools.Shell java.lang.String java.lang.String java.lang.String int java.lang.String
      StackMap stack: org.h2.tools.Shell java.lang.StringBuilder java.lang.String
        37: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        38: .line 240
            goto 8
      StackMap locals:
      StackMap stack:
        39: ldc "history"
            aload 5 /* lower */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 53
        40: .line 241
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        41: aload 0 /* this */
            getfield org.h2.tools.Shell.history:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            istore 7 /* size */
        start local 7 // int size
        42: goto 47
        43: .line 242
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.tools.Shell.history:Ljava/util/ArrayList;
            iload 6 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 8 /* s */
        start local 8 // java.lang.String s
        44: .line 243
            aload 8 /* s */
            bipush 10
            bipush 32
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            bipush 13
            bipush 32
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            astore 8 /* s */
        45: .line 244
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "#"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iconst_1
            iload 6 /* i */
            iadd
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        end local 8 // java.lang.String s
        46: .line 241
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        47: iload 6 /* i */
            iload 7 /* size */
            if_icmplt 43
        end local 7 // int size
        end local 6 // int i
        48: .line 246
            aload 0 /* this */
            getfield org.h2.tools.Shell.history:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.isEmpty:()Z
            ifne 51
        49: .line 247
            aload 0 /* this */
            ldc "To re-run a statement, type the number and press and enter"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        50: .line 248
            goto 8
        51: .line 249
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "No history"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        52: .line 251
            goto 8
      StackMap locals:
      StackMap stack:
        53: aload 5 /* lower */
            ldc "autocommit"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 64
        54: .line 252
            aload 5 /* lower */
            ldc "autocommit"
            invokevirtual java.lang.String.length:()I
            invokestatic org.h2.util.StringUtils.trimSubstring:(Ljava/lang/String;I)Ljava/lang/String;
            astore 5 /* lower */
        55: .line 253
            ldc "true"
            aload 5 /* lower */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 58
        56: .line 254
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            iconst_1
            invokeinterface java.sql.Connection.setAutoCommit:(Z)V
        57: .line 255
            goto 62
      StackMap locals:
      StackMap stack:
        58: ldc "false"
            aload 5 /* lower */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 61
        59: .line 256
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            iconst_0
            invokeinterface java.sql.Connection.setAutoCommit:(Z)V
        60: .line 257
            goto 62
        61: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "Usage: autocommit [true|false]"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        62: .line 260
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Autocommit is now "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            invokeinterface java.sql.Connection.getAutoCommit:()Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        63: .line 261
            goto 8
      StackMap locals:
      StackMap stack:
        64: aload 5 /* lower */
            ldc "maxwidth"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 72
        65: .line 262
            aload 5 /* lower */
            ldc "maxwidth"
            invokevirtual java.lang.String.length:()I
            invokestatic org.h2.util.StringUtils.trimSubstring:(Ljava/lang/String;I)Ljava/lang/String;
            astore 5 /* lower */
        66: .line 264
            aload 0 /* this */
            aload 5 /* lower */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            putfield org.h2.tools.Shell.maxColumnSize:I
        67: .line 265
            goto 70
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
        68: pop
        69: .line 266
            aload 0 /* this */
            ldc "Usage: maxwidth <integer value>"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        70: .line 268
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Maximum column width is now "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.h2.tools.Shell.maxColumnSize:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        71: .line 269
            goto 8
        72: .line 270
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 6 /* addToHistory */
        start local 6 // boolean addToHistory
        73: .line 271
            aload 1 /* statement */
            ifnonnull 86
        74: .line 272
            aload 2 /* line */
            invokestatic org.h2.util.StringUtils.isNumber:(Ljava/lang/String;)Z
            ifeq 84
        75: .line 273
            aload 2 /* line */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 7 /* pos */
        start local 7 // int pos
        76: .line 274
            iload 7 /* pos */
            ifeq 77
            iload 7 /* pos */
            aload 0 /* this */
            getfield org.h2.tools.Shell.history:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            if_icmple 79
        77: .line 275
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            ldc "Not found"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        78: .line 276
            goto 87
        79: .line 277
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.tools.Shell.history:Ljava/util/ArrayList;
            iload 7 /* pos */
            iconst_1
            isub
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* statement */
        80: .line 278
            iconst_0
            istore 6 /* addToHistory */
        81: .line 279
            aload 0 /* this */
            aload 1 /* statement */
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        82: .line 280
            iconst_1
            istore 4 /* end */
        end local 7 // int pos
        83: .line 282
            goto 87
        84: .line 283
      StackMap locals:
      StackMap stack:
            aload 2 /* line */
            astore 1 /* statement */
        85: .line 285
            goto 87
        86: .line 286
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* statement */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* line */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* statement */
        87: .line 288
      StackMap locals:
      StackMap stack:
            iload 4 /* end */
            ifeq 8
        88: .line 289
            iload 6 /* addToHistory */
            ifeq 92
        89: .line 290
            aload 0 /* this */
            getfield org.h2.tools.Shell.history:Ljava/util/ArrayList;
            iconst_0
            aload 1 /* statement */
            invokevirtual java.util.ArrayList.add:(ILjava/lang/Object;)V
        90: .line 291
            aload 0 /* this */
            getfield org.h2.tools.Shell.history:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            bipush 20
            if_icmple 92
        91: .line 292
            aload 0 /* this */
            getfield org.h2.tools.Shell.history:Ljava/util/ArrayList;
            bipush 20
            invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
            pop
        92: .line 295
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* statement */
            invokevirtual org.h2.tools.Shell.execute:(Ljava/lang/String;)V
        93: .line 296
            aconst_null
            astore 1 /* statement */
        end local 6 // boolean addToHistory
        end local 5 // java.lang.String lower
        end local 4 // boolean end
        end local 3 // java.lang.String trimmed
        end local 2 // java.lang.String line
        94: .line 299
            goto 8
      StackMap locals: org.h2.tools.Shell java.lang.String
      StackMap stack: java.sql.SQLException
        95: astore 2 /* e */
        start local 2 // java.sql.SQLException e
        96: .line 300
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "SQL Exception: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.sql.SQLException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        97: .line 301
            aconst_null
            astore 1 /* statement */
        end local 2 // java.sql.SQLException e
        98: goto 8
        99: .line 302
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 2 /* e */
        start local 2 // java.io.IOException e
       100: .line 303
            aload 0 /* this */
            aload 2 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
       101: .line 304
            goto 105
        end local 2 // java.io.IOException e
       102: .line 305
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
       103: .line 306
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Exception: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.lang.Exception.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
       104: .line 307
            aload 2 /* e */
            aload 0 /* this */
            getfield org.h2.tools.Shell.err:Ljava/io/PrintStream;
            invokevirtual java.lang.Exception.printStackTrace:(Ljava/io/PrintStream;)V
        end local 2 // java.lang.Exception e
       105: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            ifnull 112
       106: .line 313
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            invokeinterface java.sql.Connection.close:()V
       107: .line 314
            aload 0 /* this */
            ldc "Connection closed"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
       108: .line 315
            goto 112
      StackMap locals:
      StackMap stack: java.sql.SQLException
       109: astore 2 /* e */
        start local 2 // java.sql.SQLException e
       110: .line 316
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "SQL Exception: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.sql.SQLException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
       111: .line 317
            aload 2 /* e */
            aload 0 /* this */
            getfield org.h2.tools.Shell.err:Ljava/io/PrintStream;
            invokevirtual java.sql.SQLException.printStackTrace:(Ljava/io/PrintStream;)V
        end local 2 // java.sql.SQLException e
       112: .line 320
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String statement
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0  113     0          this  Lorg/h2/tools/Shell;
            6  113     1     statement  Ljava/lang/String;
           16   94     2          line  Ljava/lang/String;
           19   94     3       trimmed  Ljava/lang/String;
           22   94     4           end  Z
           26   94     5         lower  Ljava/lang/String;
           41   48     6             i  I
           42   48     7          size  I
           44   46     8             s  Ljava/lang/String;
           73   94     6  addToHistory  Z
           76   83     7           pos  I
           96   98     2             e  Ljava/sql/SQLException;
          100  102     2             e  Ljava/io/IOException;
          103  105     2             e  Ljava/lang/Exception;
          110  112     2             e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
          66    67      68  Class java.lang.NumberFormatException
           8    17      95  Class java.sql.SQLException
          18    20      95  Class java.sql.SQLException
          21    27      95  Class java.sql.SQLException
          28    94      95  Class java.sql.SQLException
           8    17      99  Class java.io.IOException
          18    20      99  Class java.io.IOException
          21    27      99  Class java.io.IOException
          28    94      99  Class java.io.IOException
           8    17     102  Class java.lang.Exception
          18    20     102  Class java.lang.Exception
          21    27     102  Class java.lang.Exception
          28    94     102  Class java.lang.Exception
         106   108     109  Class java.sql.SQLException

  private void connect();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=1
        start local 0 // org.h2.tools.Shell this
         0: .line 323
            ldc "jdbc:h2:~/test"
            astore 1 /* url */
        start local 1 // java.lang.String url
         1: .line 324
            ldc ""
            astore 2 /* user */
        start local 2 // java.lang.String user
         2: .line 325
            aconst_null
            astore 3 /* driver */
        start local 3 // java.lang.String driver
         3: .line 328
            ldc "null"
            aload 0 /* this */
            getfield org.h2.tools.Shell.serverPropertiesDir:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         4: .line 329
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 4 /* prop */
        start local 4 // java.util.Properties prop
         5: .line 330
            goto 8
        end local 4 // java.util.Properties prop
         6: .line 332
      StackMap locals: java.lang.String java.lang.String java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.h2.tools.Shell.serverPropertiesDir:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ".h2.server.properties"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 331
            invokestatic org.h2.util.SortedProperties.loadProperties:(Ljava/lang/String;)Lorg/h2/util/SortedProperties;
            astore 4 /* prop */
        start local 4 // java.util.Properties prop
         8: .line 334
      StackMap locals: java.util.Properties
      StackMap stack:
            aconst_null
            astore 5 /* data */
        start local 5 // java.lang.String data
         9: .line 335
            iconst_0
            istore 6 /* found */
        start local 6 // boolean found
        10: .line 336
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        11: .line 337
      StackMap locals: java.lang.String int int
      StackMap stack:
            aload 4 /* prop */
            iload 7 /* i */
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* d */
        start local 8 // java.lang.String d
        12: .line 338
            aload 8 /* d */
            ifnonnull 14
        13: .line 339
            goto 17
        14: .line 341
      StackMap locals: java.lang.String
      StackMap stack:
            iconst_1
            istore 6 /* found */
        15: .line 342
            aload 8 /* d */
            astore 5 /* data */
        end local 8 // java.lang.String d
        16: .line 336
            iinc 7 /* i */ 1
            goto 11
        end local 7 // int i
        17: .line 344
      StackMap locals:
      StackMap stack:
            iload 6 /* found */
            ifeq 24
        18: .line 345
            new org.h2.server.web.ConnectionInfo
            dup
            aload 5 /* data */
            invokespecial org.h2.server.web.ConnectionInfo.<init>:(Ljava/lang/String;)V
            astore 7 /* info */
        start local 7 // org.h2.server.web.ConnectionInfo info
        19: .line 346
            aload 7 /* info */
            getfield org.h2.server.web.ConnectionInfo.url:Ljava/lang/String;
            astore 1 /* url */
        20: .line 347
            aload 7 /* info */
            getfield org.h2.server.web.ConnectionInfo.user:Ljava/lang/String;
            astore 2 /* user */
        21: .line 348
            aload 7 /* info */
            getfield org.h2.server.web.ConnectionInfo.driver:Ljava/lang/String;
            astore 3 /* driver */
        end local 7 // org.h2.server.web.ConnectionInfo info
        end local 6 // boolean found
        end local 5 // java.lang.String data
        end local 4 // java.util.Properties prop
        22: .line 350
            goto 24
      StackMap locals: org.h2.tools.Shell java.lang.String java.lang.String java.lang.String
      StackMap stack: java.io.IOException
        23: pop
        24: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "[Enter]   "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* url */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        25: .line 354
            aload 0 /* this */
            ldc "URL       "
            invokevirtual org.h2.tools.Shell.print:(Ljava/lang/String;)V
        26: .line 355
            aload 0 /* this */
            aload 1 /* url */
            invokevirtual org.h2.tools.Shell.readLine:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 1 /* url */
        27: .line 356
            aload 3 /* driver */
            ifnonnull 29
        28: .line 357
            aload 1 /* url */
            invokestatic org.h2.util.JdbcUtils.getDriver:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* driver */
        29: .line 359
      StackMap locals:
      StackMap stack:
            aload 3 /* driver */
            ifnull 31
        30: .line 360
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "[Enter]   "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* driver */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        31: .line 362
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "Driver    "
            invokevirtual org.h2.tools.Shell.print:(Ljava/lang/String;)V
        32: .line 363
            aload 0 /* this */
            aload 3 /* driver */
            invokevirtual org.h2.tools.Shell.readLine:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 3 /* driver */
        33: .line 364
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "[Enter]   "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* user */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        34: .line 365
            aload 0 /* this */
            ldc "User      "
            invokevirtual org.h2.tools.Shell.print:(Ljava/lang/String;)V
        35: .line 366
            aload 0 /* this */
            aload 2 /* user */
            invokevirtual org.h2.tools.Shell.readLine:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* user */
        36: .line 368
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.readPassword:()Ljava/lang/String;
            astore 4 /* password */
        start local 4 // java.lang.String password
        37: .line 370
            aload 0 /* this */
            aload 3 /* driver */
            new java.lang.StringBuilder
            dup
            aload 1 /* url */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ";IFEXISTS=TRUE"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* user */
            aload 4 /* password */
            invokestatic org.h2.util.JdbcUtils.getConnection:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;
            putfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
        38: .line 371
            goto 49
        39: .line 372
      StackMap locals: org.h2.tools.Shell java.lang.String java.lang.String java.lang.String java.lang.String
      StackMap stack: java.sql.SQLException
            astore 5 /* ex */
        start local 5 // java.sql.SQLException ex
        40: .line 373
            aload 5 /* ex */
            invokevirtual java.sql.SQLException.getErrorCode:()I
            ldc 90146
            if_icmpne 48
        41: .line 374
            aload 0 /* this */
            ldc "Type the same password again to confirm database creation."
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        42: .line 375
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.readPassword:()Ljava/lang/String;
            astore 6 /* password2 */
        start local 6 // java.lang.String password2
        43: .line 376
            aload 4 /* password */
            aload 6 /* password2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 46
        44: .line 377
            aload 0 /* this */
            aload 3 /* driver */
            aload 1 /* url */
            aload 2 /* user */
            aload 4 /* password */
            invokestatic org.h2.util.JdbcUtils.getConnection:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;
            putfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
        45: .line 378
            goto 49
        46: .line 380
      StackMap locals: java.sql.SQLException java.lang.String
      StackMap stack:
            aload 0 /* this */
            ldc "Passwords don't match. Try again."
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        47: .line 381
            goto 36
        end local 6 // java.lang.String password2
        48: .line 384
      StackMap locals:
      StackMap stack:
            aload 5 /* ex */
            athrow
        end local 5 // java.sql.SQLException ex
        end local 4 // java.lang.String password
        49: .line 388
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.tools.Shell.conn:Ljava/sql/Connection;
            invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
            putfield org.h2.tools.Shell.stat:Ljava/sql/Statement;
        50: .line 389
            aload 0 /* this */
            ldc "Connected"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        51: .line 390
            return
        end local 3 // java.lang.String driver
        end local 2 // java.lang.String user
        end local 1 // java.lang.String url
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   52     0       this  Lorg/h2/tools/Shell;
            1   52     1        url  Ljava/lang/String;
            2   52     2       user  Ljava/lang/String;
            3   52     3     driver  Ljava/lang/String;
            5    6     4       prop  Ljava/util/Properties;
            8   22     4       prop  Ljava/util/Properties;
            9   22     5       data  Ljava/lang/String;
           10   22     6      found  Z
           11   17     7          i  I
           12   16     8          d  Ljava/lang/String;
           19   22     7       info  Lorg/h2/server/web/ConnectionInfo;
           37   49     4   password  Ljava/lang/String;
           40   49     5         ex  Ljava/sql/SQLException;
           43   48     6  password2  Ljava/lang/String;
      Exception table:
        from    to  target  type
           3    22      23  Class java.io.IOException
          37    38      39  Class java.sql.SQLException
    Exceptions:
      throws java.io.IOException, java.sql.SQLException

  protected void print(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.lang.String s
         0: .line 398
            aload 0 /* this */
            getfield org.h2.tools.Shell.out:Ljava/io/PrintStream;
            aload 1 /* s */
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         1: .line 399
            aload 0 /* this */
            getfield org.h2.tools.Shell.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.flush:()V
         2: .line 400
            return
        end local 1 // java.lang.String s
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/tools/Shell;
            0    3     1     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      s     

  private void println(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.lang.String s
         0: .line 403
            aload 0 /* this */
            getfield org.h2.tools.Shell.out:Ljava/io/PrintStream;
            aload 1 /* s */
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 404
            aload 0 /* this */
            getfield org.h2.tools.Shell.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.flush:()V
         2: .line 405
            return
        end local 1 // java.lang.String s
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/tools/Shell;
            0    3     1     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      s     

  private java.lang.String readPassword();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.h2.tools.Shell this
         0: .line 409
            ldc "java.lang.System.console"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.h2.util.Utils.callStaticMethod:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 1 /* console */
        start local 1 // java.lang.Object console
         1: .line 410
            aload 0 /* this */
            ldc "Password  "
            invokevirtual org.h2.tools.Shell.print:(Ljava/lang/String;)V
         2: .line 411
            aload 1 /* console */
            ldc "readPassword"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.h2.util.Utils.callMethod:(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast char[]
            astore 2 /* password */
        start local 2 // char[] password
         3: .line 412
            aload 2 /* password */
            ifnonnull 4
            aconst_null
            goto 5
      StackMap locals: java.lang.Object char[]
      StackMap stack:
         4: new java.lang.String
            dup
            aload 2 /* password */
            invokespecial java.lang.String.<init>:([C)V
      StackMap locals:
      StackMap stack: java.lang.String
         5: areturn
        end local 2 // char[] password
        end local 1 // java.lang.Object console
         6: .line 413
      StackMap locals: org.h2.tools.Shell
      StackMap stack: java.lang.Exception
            pop
         7: .line 416
            new java.lang.Thread
            dup
            aload 0 /* this */
            ldc "Password hider"
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;Ljava/lang/String;)V
            astore 1 /* passwordHider */
        start local 1 // java.lang.Thread passwordHider
         8: .line 417
            aload 0 /* this */
            iconst_0
            putfield org.h2.tools.Shell.stopHide:Z
         9: .line 418
            aload 1 /* passwordHider */
            invokevirtual java.lang.Thread.start:()V
        10: .line 419
            aload 0 /* this */
            ldc "Password  > "
            invokevirtual org.h2.tools.Shell.print:(Ljava/lang/String;)V
        11: .line 420
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.readLine:()Ljava/lang/String;
            astore 2 /* p */
        start local 2 // java.lang.String p
        12: .line 421
            aload 0 /* this */
            iconst_1
            putfield org.h2.tools.Shell.stopHide:Z
        13: .line 423
            aload 1 /* passwordHider */
            invokevirtual java.lang.Thread.join:()V
        14: .line 424
            goto 16
      StackMap locals: org.h2.tools.Shell java.lang.Thread java.lang.String
      StackMap stack: java.lang.InterruptedException
        15: pop
        16: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "\b\b"
            invokevirtual org.h2.tools.Shell.print:(Ljava/lang/String;)V
        17: .line 428
            aload 2 /* p */
            areturn
        end local 2 // java.lang.String p
        end local 1 // java.lang.Thread passwordHider
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           this  Lorg/h2/tools/Shell;
            1    6     1        console  Ljava/lang/Object;
            3    6     2       password  [C
            8   18     1  passwordHider  Ljava/lang/Thread;
           12   18     2              p  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     5       6  Class java.lang.Exception
          13    14      15  Class java.lang.InterruptedException
    Exceptions:
      throws java.io.IOException

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.tools.Shell this
         0: .line 438
            goto 5
         1: .line 439
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "\b\b><"
            invokevirtual org.h2.tools.Shell.print:(Ljava/lang/String;)V
         2: .line 441
            ldc 10
            invokestatic java.lang.Thread.sleep:(J)V
         3: .line 442
            goto 5
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         4: pop
         5: .line 438
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.tools.Shell.stopHide:Z
            ifeq 1
         6: .line 446
            return
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/h2/tools/Shell;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.InterruptedException

  private java.lang.String readLine(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.lang.String defaultValue
         0: .line 450
            aload 0 /* this */
            invokevirtual org.h2.tools.Shell.readLine:()Ljava/lang/String;
            astore 2 /* s */
        start local 2 // java.lang.String s
         1: .line 451
            aload 2 /* s */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
            aload 1 /* defaultValue */
            goto 3
      StackMap locals: java.lang.String
      StackMap stack:
         2: aload 2 /* s */
      StackMap locals:
      StackMap stack: java.lang.String
         3: areturn
        end local 2 // java.lang.String s
        end local 1 // java.lang.String defaultValue
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/h2/tools/Shell;
            0    4     1  defaultValue  Ljava/lang/String;
            1    4     2             s  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      defaultValue  

  private java.lang.String readLine();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.h2.tools.Shell this
         0: .line 455
            aload 0 /* this */
            getfield org.h2.tools.Shell.reader:Ljava/io/BufferedReader;
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 1 /* line */
        start local 1 // java.lang.String line
         1: .line 456
            aload 1 /* line */
            ifnonnull 3
         2: .line 457
            new java.io.IOException
            dup
            ldc "Aborted"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 459
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* line */
            areturn
        end local 1 // java.lang.String line
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/h2/tools/Shell;
            1    4     1  line  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException

  private void execute(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.lang.String sql
         0: .line 463
            aload 1 /* sql */
            invokestatic org.h2.util.StringUtils.isWhitespaceOrEmpty:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 464
            return
         2: .line 466
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            lstore 2 /* time */
        start local 2 // long time
         3: .line 468
            aconst_null
            astore 4 /* rs */
        start local 4 // java.sql.ResultSet rs
         4: .line 470
            aload 0 /* this */
            getfield org.h2.tools.Shell.stat:Ljava/sql/Statement;
            aload 1 /* sql */
            invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
            ifeq 14
         5: .line 471
            aload 0 /* this */
            getfield org.h2.tools.Shell.stat:Ljava/sql/Statement;
            invokeinterface java.sql.Statement.getResultSet:()Ljava/sql/ResultSet;
            astore 4 /* rs */
         6: .line 472
            aload 0 /* this */
            aload 4 /* rs */
            aload 0 /* this */
            getfield org.h2.tools.Shell.listMode:Z
            invokevirtual org.h2.tools.Shell.printResult:(Ljava/sql/ResultSet;Z)I
            istore 5 /* rowCount */
        start local 5 // int rowCount
         7: .line 473
            invokestatic java.lang.System.nanoTime:()J
            lload 2 /* time */
            lsub
            lstore 2 /* time */
         8: .line 474
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* rowCount */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            iload 5 /* rowCount */
            iconst_1
            if_icmpne 10
         9: .line 475
            ldc " row, "
            goto 11
      StackMap locals: org.h2.tools.Shell java.lang.String long java.sql.ResultSet int
      StackMap stack: org.h2.tools.Shell java.lang.StringBuilder
        10: ldc " rows, "
      StackMap locals: org.h2.tools.Shell java.lang.String long java.sql.ResultSet int
      StackMap stack: org.h2.tools.Shell java.lang.StringBuilder java.lang.String
        11: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            lload 2 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " ms)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 474
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        end local 5 // int rowCount
        13: .line 476
            goto 23
        14: .line 477
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.tools.Shell.stat:Ljava/sql/Statement;
            invokeinterface java.sql.Statement.getUpdateCount:()I
            istore 5 /* updateCount */
        start local 5 // int updateCount
        15: .line 478
            invokestatic java.lang.System.nanoTime:()J
            lload 2 /* time */
            lsub
            lstore 2 /* time */
        16: .line 479
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "(Update count: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* updateCount */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 480
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            lload 2 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " ms)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        18: .line 479
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        end local 5 // int updateCount
        19: .line 482
            goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 6
        21: .line 483
            aload 4 /* rs */
            invokestatic org.h2.util.JdbcUtils.closeSilently:(Ljava/sql/ResultSet;)V
        22: .line 484
            aload 6
            athrow
        23: .line 483
      StackMap locals:
      StackMap stack:
            aload 4 /* rs */
            invokestatic org.h2.util.JdbcUtils.closeSilently:(Ljava/sql/ResultSet;)V
        end local 4 // java.sql.ResultSet rs
        24: .line 485
            goto 29
      StackMap locals: org.h2.tools.Shell java.lang.String long
      StackMap stack: java.sql.SQLException
        25: astore 4 /* e */
        start local 4 // java.sql.SQLException e
        26: .line 486
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Error: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* e */
            invokevirtual java.sql.SQLException.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        27: .line 487
            aload 0 /* this */
            getfield org.h2.tools.Shell.listMode:Z
            ifeq 29
        28: .line 488
            aload 4 /* e */
            aload 0 /* this */
            getfield org.h2.tools.Shell.err:Ljava/io/PrintStream;
            invokevirtual java.sql.SQLException.printStackTrace:(Ljava/io/PrintStream;)V
        end local 4 // java.sql.SQLException e
        29: .line 491
      StackMap locals:
      StackMap stack:
            return
        end local 2 // long time
        end local 1 // java.lang.String sql
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   30     0         this  Lorg/h2/tools/Shell;
            0   30     1          sql  Ljava/lang/String;
            3   30     2         time  J
            4   24     4           rs  Ljava/sql/ResultSet;
            7   13     5     rowCount  I
           15   19     5  updateCount  I
           26   29     4            e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           4    20      20  any
           3    24      25  Class java.sql.SQLException
    MethodParameters:
      Name  Flags
      sql   

  private int printResult(java.sql.ResultSet, boolean);
    descriptor: (Ljava/sql/ResultSet;Z)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.sql.ResultSet rs
        start local 2 // boolean asList
         0: .line 494
            iload 2 /* asList */
            ifeq 2
         1: .line 495
            aload 0 /* this */
            aload 1 /* rs */
            invokevirtual org.h2.tools.Shell.printResultAsList:(Ljava/sql/ResultSet;)I
            ireturn
         2: .line 497
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* rs */
            invokevirtual org.h2.tools.Shell.printResultAsTable:(Ljava/sql/ResultSet;)I
            ireturn
        end local 2 // boolean asList
        end local 1 // java.sql.ResultSet rs
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/h2/tools/Shell;
            0    3     1      rs  Ljava/sql/ResultSet;
            0    3     2  asList  Z
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
        Name  Flags
      rs      
      asList  

  private int printResultAsTable(java.sql.ResultSet);
    descriptor: (Ljava/sql/ResultSet;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.sql.ResultSet rs
         0: .line 501
            aload 1 /* rs */
            invokeinterface java.sql.ResultSet.getMetaData:()Ljava/sql/ResultSetMetaData;
            astore 2 /* meta */
        start local 2 // java.sql.ResultSetMetaData meta
         1: .line 502
            aload 2 /* meta */
            invokeinterface java.sql.ResultSetMetaData.getColumnCount:()I
            istore 3 /* len */
        start local 3 // int len
         2: .line 503
            iconst_0
            istore 4 /* truncated */
        start local 4 // boolean truncated
         3: .line 504
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* rows */
        start local 5 // java.util.ArrayList rows
         4: .line 506
            iload 3 /* len */
            anewarray java.lang.String
            astore 6 /* columns */
        start local 6 // java.lang.String[] columns
         5: .line 507
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         6: goto 12
         7: .line 508
      StackMap locals: org.h2.tools.Shell java.sql.ResultSet java.sql.ResultSetMetaData int int java.util.ArrayList java.lang.String[] int
      StackMap stack:
            aload 2 /* meta */
            iload 7 /* i */
            iconst_1
            iadd
            invokeinterface java.sql.ResultSetMetaData.getColumnLabel:(I)Ljava/lang/String;
            astore 8 /* s */
        start local 8 // java.lang.String s
         8: .line 509
            aload 6 /* columns */
            iload 7 /* i */
            aload 8 /* s */
            ifnonnull 9
            ldc ""
            goto 10
      StackMap locals: org.h2.tools.Shell java.sql.ResultSet java.sql.ResultSetMetaData int int java.util.ArrayList java.lang.String[] int java.lang.String
      StackMap stack: java.lang.String[] int
         9: aload 8 /* s */
      StackMap locals: org.h2.tools.Shell java.sql.ResultSet java.sql.ResultSetMetaData int int java.util.ArrayList java.lang.String[] int java.lang.String
      StackMap stack: java.lang.String[] int java.lang.String
        10: aastore
        end local 8 // java.lang.String s
        11: .line 507
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 7 /* i */
            iload 3 /* len */
            if_icmplt 7
        end local 7 // int i
        13: .line 511
            aload 5 /* rows */
            aload 6 /* columns */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        14: .line 512
            iconst_0
            istore 7 /* rowCount */
        start local 7 // int rowCount
        15: .line 513
            goto 21
        16: .line 514
      StackMap locals:
      StackMap stack:
            iinc 7 /* rowCount */ 1
        17: .line 515
            iload 4 /* truncated */
            aload 0 /* this */
            aload 1 /* rs */
            iload 3 /* len */
            aload 5 /* rows */
            invokevirtual org.h2.tools.Shell.loadRow:(Ljava/sql/ResultSet;ILjava/util/ArrayList;)Z
            ior
            istore 4 /* truncated */
        18: .line 516
            iload 7 /* rowCount */
            sipush 5000
            if_icmple 21
        19: .line 517
            aload 0 /* this */
            aload 5 /* rows */
            iload 3 /* len */
            invokevirtual org.h2.tools.Shell.printRows:(Ljava/util/ArrayList;I)[I
            pop
        20: .line 518
            aload 5 /* rows */
            invokevirtual java.util.ArrayList.clear:()V
        21: .line 513
      StackMap locals:
      StackMap stack:
            aload 1 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifne 16
        22: .line 521
            aload 0 /* this */
            aload 5 /* rows */
            iload 3 /* len */
            invokevirtual org.h2.tools.Shell.printRows:(Ljava/util/ArrayList;I)[I
            pop
        23: .line 522
            aload 5 /* rows */
            invokevirtual java.util.ArrayList.clear:()V
        24: .line 523
            iload 4 /* truncated */
            ifeq 26
        25: .line 524
            aload 0 /* this */
            ldc "(data is partially truncated)"
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        26: .line 526
      StackMap locals:
      StackMap stack:
            iload 7 /* rowCount */
            ireturn
        end local 7 // int rowCount
        end local 6 // java.lang.String[] columns
        end local 5 // java.util.ArrayList rows
        end local 4 // boolean truncated
        end local 3 // int len
        end local 2 // java.sql.ResultSetMetaData meta
        end local 1 // java.sql.ResultSet rs
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   27     0       this  Lorg/h2/tools/Shell;
            0   27     1         rs  Ljava/sql/ResultSet;
            1   27     2       meta  Ljava/sql/ResultSetMetaData;
            2   27     3        len  I
            3   27     4  truncated  Z
            4   27     5       rows  Ljava/util/ArrayList<[Ljava/lang/String;>;
            5   27     6    columns  [Ljava/lang/String;
            6   13     7          i  I
            8   11     8          s  Ljava/lang/String;
           15   27     7   rowCount  I
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      rs    

  private boolean loadRow(java.sql.ResultSet, int, java.util.ArrayList<java.lang.String[]>);
    descriptor: (Ljava/sql/ResultSet;ILjava/util/ArrayList;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=4
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.sql.ResultSet rs
        start local 2 // int len
        start local 3 // java.util.ArrayList rows
         0: .line 531
            iconst_0
            istore 4 /* truncated */
        start local 4 // boolean truncated
         1: .line 532
            iload 2 /* len */
            anewarray java.lang.String
            astore 5 /* row */
        start local 5 // java.lang.String[] row
         2: .line 533
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: goto 12
         4: .line 534
      StackMap locals: int java.lang.String[] int
      StackMap stack:
            aload 1 /* rs */
            iload 6 /* i */
            iconst_1
            iadd
            invokeinterface java.sql.ResultSet.getString:(I)Ljava/lang/String;
            astore 7 /* s */
        start local 7 // java.lang.String s
         5: .line 535
            aload 7 /* s */
            ifnonnull 7
         6: .line 536
            ldc "null"
            astore 7 /* s */
         7: .line 539
      StackMap locals: java.lang.String
      StackMap stack:
            iload 2 /* len */
            iconst_1
            if_icmple 10
            aload 7 /* s */
            invokevirtual java.lang.String.length:()I
            aload 0 /* this */
            getfield org.h2.tools.Shell.maxColumnSize:I
            if_icmple 10
         8: .line 540
            aload 7 /* s */
            iconst_0
            aload 0 /* this */
            getfield org.h2.tools.Shell.maxColumnSize:I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 7 /* s */
         9: .line 541
            iconst_1
            istore 4 /* truncated */
        10: .line 543
      StackMap locals:
      StackMap stack:
            aload 5 /* row */
            iload 6 /* i */
            aload 7 /* s */
            aastore
        end local 7 // java.lang.String s
        11: .line 533
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 6 /* i */
            iload 2 /* len */
            if_icmplt 4
        end local 6 // int i
        13: .line 545
            aload 3 /* rows */
            aload 5 /* row */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        14: .line 546
            iload 4 /* truncated */
            ireturn
        end local 5 // java.lang.String[] row
        end local 4 // boolean truncated
        end local 3 // java.util.ArrayList rows
        end local 2 // int len
        end local 1 // java.sql.ResultSet rs
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lorg/h2/tools/Shell;
            0   15     1         rs  Ljava/sql/ResultSet;
            0   15     2        len  I
            0   15     3       rows  Ljava/util/ArrayList<[Ljava/lang/String;>;
            1   15     4  truncated  Z
            2   15     5        row  [Ljava/lang/String;
            3   13     6          i  I
            5   11     7          s  Ljava/lang/String;
    Exceptions:
      throws java.sql.SQLException
    Signature: (Ljava/sql/ResultSet;ILjava/util/ArrayList<[Ljava/lang/String;>;)Z
    MethodParameters:
      Name  Flags
      rs    
      len   
      rows  

  private int[] printRows(java.util.ArrayList<java.lang.String[]>, );
    descriptor: (Ljava/util/ArrayList;I)[I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=10, args_size=3
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.util.ArrayList rows
        start local 2 // int len
         0: .line 550
            iload 2 /* len */
            newarray 10
            astore 3 /* columnSizes */
        start local 3 // int[] columnSizes
         1: .line 551
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         2: goto 12
         3: .line 552
      StackMap locals: int[] int
      StackMap stack:
            iconst_0
            istore 5 /* max */
        start local 5 // int max
         4: .line 553
            aload 1 /* rows */
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 7
            goto 7
      StackMap locals: org.h2.tools.Shell java.util.ArrayList int int[] int int top java.util.Iterator
      StackMap stack:
         5: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String[]
            astore 6 /* row */
        start local 6 // java.lang.String[] row
         6: .line 554
            iload 5 /* max */
            aload 6 /* row */
            iload 4 /* i */
            aaload
            invokevirtual java.lang.String.length:()I
            invokestatic java.lang.Math.max:(II)I
            istore 5 /* max */
        end local 6 // java.lang.String[] row
         7: .line 553
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         8: .line 556
            iload 2 /* len */
            iconst_1
            if_icmple 10
         9: .line 557
            aload 0 /* this */
            getfield org.h2.tools.Shell.maxColumnSize:I
            iload 5 /* max */
            invokestatic java.lang.Math.min:(II)I
            pop
        10: .line 559
      StackMap locals: org.h2.tools.Shell java.util.ArrayList int int[] int int
      StackMap stack:
            aload 3 /* columnSizes */
            iload 4 /* i */
            iload 5 /* max */
            iastore
        end local 5 // int max
        11: .line 551
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 4 /* i */
            iload 2 /* len */
            if_icmplt 3
        end local 4 // int i
        13: .line 561
            aload 1 /* rows */
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 5
            goto 31
      StackMap locals: org.h2.tools.Shell java.util.ArrayList int int[] top java.util.Iterator
      StackMap stack:
        14: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String[]
            astore 4 /* row */
        start local 4 // java.lang.String[] row
        15: .line 562
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 6 /* buff */
        start local 6 // java.lang.StringBuilder buff
        16: .line 563
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        17: goto 29
        18: .line 564
      StackMap locals: org.h2.tools.Shell java.util.ArrayList int int[] java.lang.String[] java.util.Iterator java.lang.StringBuilder int
      StackMap stack:
            iload 7 /* i */
            ifle 20
        19: .line 565
            aload 6 /* buff */
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            bipush 124
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        20: .line 567
      StackMap locals:
      StackMap stack:
            aload 4 /* row */
            iload 7 /* i */
            aaload
            astore 8 /* s */
        start local 8 // java.lang.String s
        21: .line 568
            aload 6 /* buff */
            aload 8 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 569
            iload 7 /* i */
            iload 2 /* len */
            iconst_1
            isub
            if_icmpge 28
        23: .line 570
            aload 8 /* s */
            invokevirtual java.lang.String.length:()I
            istore 9 /* j */
        start local 9 // int j
        24: goto 27
        25: .line 571
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 6 /* buff */
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        26: .line 570
            iinc 9 /* j */ 1
      StackMap locals:
      StackMap stack:
        27: iload 9 /* j */
            aload 3 /* columnSizes */
            iload 7 /* i */
            iaload
            if_icmplt 25
        end local 9 // int j
        end local 8 // java.lang.String s
        28: .line 563
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        29: iload 7 /* i */
            iload 2 /* len */
            if_icmplt 18
        end local 7 // int i
        30: .line 575
            aload 0 /* this */
            aload 6 /* buff */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        end local 6 // java.lang.StringBuilder buff
        end local 4 // java.lang.String[] row
        31: .line 561
      StackMap locals: org.h2.tools.Shell java.util.ArrayList int int[] top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        32: .line 577
            aload 3 /* columnSizes */
            areturn
        end local 3 // int[] columnSizes
        end local 2 // int len
        end local 1 // java.util.ArrayList rows
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   33     0         this  Lorg/h2/tools/Shell;
            0   33     1         rows  Ljava/util/ArrayList<[Ljava/lang/String;>;
            0   33     2          len  I
            1   33     3  columnSizes  [I
            2   13     4            i  I
            4   11     5          max  I
            6    7     6          row  [Ljava/lang/String;
           15   31     4          row  [Ljava/lang/String;
           16   31     6         buff  Ljava/lang/StringBuilder;
           17   30     7            i  I
           21   28     8            s  Ljava/lang/String;
           24   28     9            j  I
    Signature: (Ljava/util/ArrayList<[Ljava/lang/String;>;I)[I
    MethodParameters:
      Name  Flags
      rows  
      len   

  private int printResultAsList(java.sql.ResultSet);
    descriptor: (Ljava/sql/ResultSet;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=11, args_size=2
        start local 0 // org.h2.tools.Shell this
        start local 1 // java.sql.ResultSet rs
         0: .line 581
            aload 1 /* rs */
            invokeinterface java.sql.ResultSet.getMetaData:()Ljava/sql/ResultSetMetaData;
            astore 2 /* meta */
        start local 2 // java.sql.ResultSetMetaData meta
         1: .line 582
            iconst_0
            istore 3 /* longestLabel */
        start local 3 // int longestLabel
         2: .line 583
            aload 2 /* meta */
            invokeinterface java.sql.ResultSetMetaData.getColumnCount:()I
            istore 4 /* len */
        start local 4 // int len
         3: .line 584
            iload 4 /* len */
            anewarray java.lang.String
            astore 5 /* columns */
        start local 5 // java.lang.String[] columns
         4: .line 585
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 10
         6: .line 586
      StackMap locals: org.h2.tools.Shell java.sql.ResultSet java.sql.ResultSetMetaData int int java.lang.String[] int
      StackMap stack:
            aload 2 /* meta */
            iload 6 /* i */
            iconst_1
            iadd
            invokeinterface java.sql.ResultSetMetaData.getColumnLabel:(I)Ljava/lang/String;
            astore 7 /* s */
        start local 7 // java.lang.String s
         7: .line 587
            aload 5 /* columns */
            iload 6 /* i */
            aload 7 /* s */
            aastore
         8: .line 588
            iload 3 /* longestLabel */
            aload 7 /* s */
            invokevirtual java.lang.String.length:()I
            invokestatic java.lang.Math.max:(II)I
            istore 3 /* longestLabel */
        end local 7 // java.lang.String s
         9: .line 585
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 6 /* i */
            iload 4 /* len */
            if_icmplt 6
        end local 6 // int i
        11: .line 590
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 6 /* buff */
        start local 6 // java.lang.StringBuilder buff
        12: .line 591
            iconst_0
            istore 7 /* rowCount */
        start local 7 // int rowCount
        13: .line 592
            goto 33
        14: .line 593
      StackMap locals: org.h2.tools.Shell java.sql.ResultSet java.sql.ResultSetMetaData int int java.lang.String[] java.lang.StringBuilder int
      StackMap stack:
            iinc 7 /* rowCount */ 1
        15: .line 594
            aload 6 /* buff */
            iconst_0
            invokevirtual java.lang.StringBuilder.setLength:(I)V
        16: .line 595
            iload 7 /* rowCount */
            iconst_1
            if_icmple 18
        17: .line 596
            aload 0 /* this */
            ldc ""
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        18: .line 598
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        19: goto 31
        20: .line 599
      StackMap locals: int
      StackMap stack:
            iload 8 /* i */
            ifle 22
        21: .line 600
            aload 6 /* buff */
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        22: .line 602
      StackMap locals:
      StackMap stack:
            aload 5 /* columns */
            iload 8 /* i */
            aaload
            astore 9 /* label */
        start local 9 // java.lang.String label
        23: .line 603
            aload 6 /* buff */
            aload 9 /* label */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        24: .line 604
            aload 9 /* label */
            invokevirtual java.lang.String.length:()I
            istore 10 /* j */
        start local 10 // int j
        25: goto 28
        26: .line 605
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 6 /* buff */
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        27: .line 604
            iinc 10 /* j */ 1
      StackMap locals:
      StackMap stack:
        28: iload 10 /* j */
            iload 3 /* longestLabel */
            if_icmplt 26
        end local 10 // int j
        29: .line 607
            aload 6 /* buff */
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* rs */
            iload 8 /* i */
            iconst_1
            iadd
            invokeinterface java.sql.ResultSet.getString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 9 // java.lang.String label
        30: .line 598
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        31: iload 8 /* i */
            iload 4 /* len */
            if_icmplt 20
        end local 8 // int i
        32: .line 609
            aload 0 /* this */
            aload 6 /* buff */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        33: .line 592
      StackMap locals:
      StackMap stack:
            aload 1 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifne 14
        34: .line 611
            iload 7 /* rowCount */
            ifne 44
        35: .line 612
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        36: goto 42
        37: .line 613
      StackMap locals: int
      StackMap stack:
            iload 8 /* i */
            ifle 39
        38: .line 614
            aload 6 /* buff */
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        39: .line 616
      StackMap locals:
      StackMap stack:
            aload 5 /* columns */
            iload 8 /* i */
            aaload
            astore 9 /* label */
        start local 9 // java.lang.String label
        40: .line 617
            aload 6 /* buff */
            aload 9 /* label */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 9 // java.lang.String label
        41: .line 612
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        42: iload 8 /* i */
            iload 4 /* len */
            if_icmplt 37
        end local 8 // int i
        43: .line 619
            aload 0 /* this */
            aload 6 /* buff */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.tools.Shell.println:(Ljava/lang/String;)V
        44: .line 621
      StackMap locals:
      StackMap stack:
            iload 7 /* rowCount */
            ireturn
        end local 7 // int rowCount
        end local 6 // java.lang.StringBuilder buff
        end local 5 // java.lang.String[] columns
        end local 4 // int len
        end local 3 // int longestLabel
        end local 2 // java.sql.ResultSetMetaData meta
        end local 1 // java.sql.ResultSet rs
        end local 0 // org.h2.tools.Shell this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   45     0          this  Lorg/h2/tools/Shell;
            0   45     1            rs  Ljava/sql/ResultSet;
            1   45     2          meta  Ljava/sql/ResultSetMetaData;
            2   45     3  longestLabel  I
            3   45     4           len  I
            4   45     5       columns  [Ljava/lang/String;
            5   11     6             i  I
            7    9     7             s  Ljava/lang/String;
           12   45     6          buff  Ljava/lang/StringBuilder;
           13   45     7      rowCount  I
           19   32     8             i  I
           23   30     9         label  Ljava/lang/String;
           25   29    10             j  I
           36   43     8             i  I
           40   41     9         label  Ljava/lang/String;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      rs    
}
SourceFile: "Shell.java"