public final class org.h2.fulltext.FullText$FullTextTrigger implements org.h2.api.Trigger
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.h2.fulltext.FullText$FullTextTrigger
  super_class: java.lang.Object
{
  private org.h2.fulltext.FullTextSettings setting;
    descriptor: Lorg/h2/fulltext/FullTextSettings;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.fulltext.IndexInfo index;
    descriptor: Lorg/h2/fulltext/IndexInfo;
    flags: (0x0002) ACC_PRIVATE

  private int[] columnTypes;
    descriptor: [I
    flags: (0x0002) ACC_PRIVATE

  private final java.sql.PreparedStatement[] prepStatements;
    descriptor: [Ljava/sql/PreparedStatement;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

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

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

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

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

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

  private static final java.lang.String[] SQL;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 876
            bipush 6
            anewarray java.lang.String
            dup
            iconst_0
         1: .line 877
            ldc "MERGE INTO FT.WORDS(NAME) KEY(NAME) VALUES(?)"
            aastore
            dup
            iconst_1
         2: .line 878
            ldc "INSERT INTO FT.ROWS(HASH, INDEXID, KEY) VALUES(?, ?, ?)"
            aastore
            dup
            iconst_2
         3: .line 879
            ldc "INSERT INTO FT.MAP(ROWID, WORDID) VALUES(?, ?)"
            aastore
            dup
            iconst_3
         4: .line 880
            ldc "DELETE FROM FT.ROWS WHERE HASH=? AND INDEXID=? AND KEY=?"
            aastore
            dup
            iconst_4
         5: .line 881
            ldc "DELETE FROM FT.MAP WHERE ROWID=? AND WORDID=?"
            aastore
            dup
            iconst_5
         6: .line 882
            ldc "SELECT ID FROM FT.ROWS WHERE HASH=? AND INDEXID=? AND KEY=?"
            aastore
         7: .line 876
            putstatic org.h2.fulltext.FullText$FullTextTrigger.SQL:[Ljava/lang/String;
         8: .line 883
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
         0: .line 862
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 866
            aload 0 /* this */
            getstatic org.h2.fulltext.FullText$FullTextTrigger.SQL:[Ljava/lang/String;
            arraylength
            anewarray java.sql.PreparedStatement
            putfield org.h2.fulltext.FullText$FullTextTrigger.prepStatements:[Ljava/sql/PreparedStatement;
         2: .line 862
            return
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/fulltext/FullText$FullTextTrigger;

  public void init(java.sql.Connection, java.lang.String, java.lang.String, java.lang.String, boolean, int);
    descriptor: (Ljava/sql/Connection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=14, args_size=7
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
        start local 1 // java.sql.Connection conn
        start local 2 // java.lang.String schemaName
        start local 3 // java.lang.String triggerName
        start local 4 // java.lang.String tableName
        start local 5 // boolean before
        start local 6 // int type
         0: .line 891
            aload 0 /* this */
            aload 1 /* conn */
            invokestatic org.h2.fulltext.FullTextSettings.getInstance:(Ljava/sql/Connection;)Lorg/h2/fulltext/FullTextSettings;
            putfield org.h2.fulltext.FullText$FullTextTrigger.setting:Lorg/h2/fulltext/FullTextSettings;
         1: .line 892
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.setting:Lorg/h2/fulltext/FullTextSettings;
            invokevirtual org.h2.fulltext.FullTextSettings.isInitialized:()Z
            ifne 3
         2: .line 893
            aload 1 /* conn */
            invokestatic org.h2.fulltext.FullText.init:(Ljava/sql/Connection;)V
         3: .line 895
      StackMap locals:
      StackMap stack:
            invokestatic org.h2.util.Utils.newSmallArrayList:()Ljava/util/ArrayList;
            astore 7 /* keyList */
        start local 7 // java.util.ArrayList keyList
         4: .line 896
            aload 1 /* conn */
            invokeinterface java.sql.Connection.getMetaData:()Ljava/sql/DatabaseMetaData;
            astore 8 /* meta */
        start local 8 // java.sql.DatabaseMetaData meta
         5: .line 897
            aload 8 /* meta */
            aconst_null
         6: .line 898
            aload 2 /* schemaName */
            invokestatic org.h2.util.StringUtils.escapeMetaDataPattern:(Ljava/lang/String;)Ljava/lang/String;
         7: .line 899
            aload 4 /* tableName */
            invokestatic org.h2.util.StringUtils.escapeMetaDataPattern:(Ljava/lang/String;)Ljava/lang/String;
         8: .line 900
            aconst_null
         9: .line 897
            invokeinterface java.sql.DatabaseMetaData.getColumns:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;
            astore 9 /* rs */
        start local 9 // java.sql.ResultSet rs
        10: .line 901
            invokestatic org.h2.util.Utils.newSmallArrayList:()Ljava/util/ArrayList;
            astore 10 /* columnList */
        start local 10 // java.util.ArrayList columnList
        11: .line 902
            goto 13
        12: .line 903
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.String java.lang.String java.lang.String int int java.util.ArrayList java.sql.DatabaseMetaData java.sql.ResultSet java.util.ArrayList
      StackMap stack:
            aload 10 /* columnList */
            aload 9 /* rs */
            ldc "COLUMN_NAME"
            invokeinterface java.sql.ResultSet.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        13: .line 902
      StackMap locals:
      StackMap stack:
            aload 9 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifne 12
        14: .line 905
            aload 0 /* this */
            aload 10 /* columnList */
            invokevirtual java.util.ArrayList.size:()I
            newarray 10
            putfield org.h2.fulltext.FullText$FullTextTrigger.columnTypes:[I
        15: .line 906
            aload 0 /* this */
            new org.h2.fulltext.IndexInfo
            dup
            invokespecial org.h2.fulltext.IndexInfo.<init>:()V
            putfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
        16: .line 907
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            aload 2 /* schemaName */
            putfield org.h2.fulltext.IndexInfo.schema:Ljava/lang/String;
        17: .line 908
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            aload 4 /* tableName */
            putfield org.h2.fulltext.IndexInfo.table:Ljava/lang/String;
        18: .line 909
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            aload 10 /* columnList */
            iconst_0
            anewarray java.lang.String
            invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            putfield org.h2.fulltext.IndexInfo.columns:[Ljava/lang/String;
        19: .line 910
            aload 8 /* meta */
            aconst_null
        20: .line 911
            aload 2 /* schemaName */
            invokestatic org.h2.util.StringUtils.escapeMetaDataPattern:(Ljava/lang/String;)Ljava/lang/String;
        21: .line 912
            aload 4 /* tableName */
            invokestatic org.h2.util.StringUtils.escapeMetaDataPattern:(Ljava/lang/String;)Ljava/lang/String;
        22: .line 913
            aconst_null
        23: .line 910
            invokeinterface java.sql.DatabaseMetaData.getColumns:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;
            astore 9 /* rs */
        24: .line 914
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        25: goto 28
        26: .line 915
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.columnTypes:[I
            iload 11 /* i */
            aload 9 /* rs */
            ldc "DATA_TYPE"
            invokeinterface java.sql.ResultSet.getInt:(Ljava/lang/String;)I
            iastore
        27: .line 914
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        28: aload 9 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifne 26
        end local 11 // int i
        29: .line 917
            aload 7 /* keyList */
            invokevirtual java.util.ArrayList.isEmpty:()Z
            ifeq 37
        30: .line 918
            aload 8 /* meta */
            aconst_null
        31: .line 919
            aload 2 /* schemaName */
            invokestatic org.h2.util.StringUtils.escapeMetaDataPattern:(Ljava/lang/String;)Ljava/lang/String;
        32: .line 920
            aload 4 /* tableName */
        33: .line 918
            invokeinterface java.sql.DatabaseMetaData.getPrimaryKeys:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;
            astore 9 /* rs */
        34: .line 921
            goto 36
        35: .line 922
      StackMap locals:
      StackMap stack:
            aload 7 /* keyList */
            aload 9 /* rs */
            ldc "COLUMN_NAME"
            invokeinterface java.sql.ResultSet.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        36: .line 921
      StackMap locals:
      StackMap stack:
            aload 9 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifne 35
        37: .line 925
      StackMap locals:
      StackMap stack:
            aload 7 /* keyList */
            invokevirtual java.util.ArrayList.isEmpty:()Z
            ifeq 39
        38: .line 926
            new java.lang.StringBuilder
            dup
            ldc "No primary key for table "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* tableName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.h2.fulltext.FullText.throwException:(Ljava/lang/String;)Ljava/sql/SQLException;
            athrow
        39: .line 928
      StackMap locals:
      StackMap stack:
            invokestatic org.h2.util.Utils.newSmallArrayList:()Ljava/util/ArrayList;
            astore 11 /* indexList */
        start local 11 // java.util.ArrayList indexList
        40: .line 929
            aload 1 /* conn */
        41: .line 930
            ldc "SELECT ID, COLUMNS FROM FT.INDEXES WHERE SCHEMA=? AND `TABLE`=?"
        42: .line 929
            invokeinterface java.sql.Connection.prepareStatement:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 12 /* prep */
        start local 12 // java.sql.PreparedStatement prep
        43: .line 932
            aload 12 /* prep */
            iconst_1
            aload 2 /* schemaName */
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        44: .line 933
            aload 12 /* prep */
            iconst_2
            aload 4 /* tableName */
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        45: .line 934
            aload 12 /* prep */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 9 /* rs */
        46: .line 935
            aload 9 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifeq 51
        47: .line 936
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            aload 9 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getInt:(I)I
            putfield org.h2.fulltext.IndexInfo.id:I
        48: .line 937
            aload 9 /* rs */
            iconst_2
            invokeinterface java.sql.ResultSet.getString:(I)Ljava/lang/String;
            astore 13 /* columns */
        start local 13 // java.lang.String columns
        49: .line 938
            aload 13 /* columns */
            ifnull 51
        50: .line 939
            aload 11 /* indexList */
            aload 13 /* columns */
            bipush 44
            iconst_1
            invokestatic org.h2.util.StringUtils.arraySplit:(Ljava/lang/String;CZ)[Ljava/lang/String;
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
        end local 13 // java.lang.String columns
        51: .line 942
      StackMap locals: java.util.ArrayList java.sql.PreparedStatement
      StackMap stack:
            aload 11 /* indexList */
            invokevirtual java.util.ArrayList.isEmpty:()Z
            ifeq 53
        52: .line 943
            aload 11 /* indexList */
            aload 10 /* columnList */
            invokevirtual java.util.ArrayList.addAll:(Ljava/util/Collection;)Z
            pop
        53: .line 945
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            aload 7 /* keyList */
            invokevirtual java.util.ArrayList.size:()I
            newarray 10
            putfield org.h2.fulltext.IndexInfo.keys:[I
        54: .line 946
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            getfield org.h2.fulltext.IndexInfo.keys:[I
            aload 7 /* keyList */
            aload 10 /* columnList */
            invokestatic org.h2.fulltext.FullText.setColumns:([ILjava/util/ArrayList;Ljava/util/ArrayList;)V
        55: .line 947
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            aload 11 /* indexList */
            invokevirtual java.util.ArrayList.size:()I
            newarray 10
            putfield org.h2.fulltext.IndexInfo.indexColumns:[I
        56: .line 948
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            getfield org.h2.fulltext.IndexInfo.indexColumns:[I
            aload 11 /* indexList */
            aload 10 /* columnList */
            invokestatic org.h2.fulltext.FullText.setColumns:([ILjava/util/ArrayList;Ljava/util/ArrayList;)V
        57: .line 949
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.setting:Lorg/h2/fulltext/FullTextSettings;
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            invokevirtual org.h2.fulltext.FullTextSettings.addIndexInfo:(Lorg/h2/fulltext/IndexInfo;)V
        58: .line 951
            aload 0 /* this */
            aload 1 /* conn */
            invokestatic org.h2.fulltext.FullText$FullTextTrigger.isMultiThread:(Ljava/sql/Connection;)Z
            putfield org.h2.fulltext.FullText$FullTextTrigger.useOwnConnection:Z
        59: .line 952
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.useOwnConnection:Z
            ifne 67
        60: .line 953
            iconst_0
            istore 13 /* i */
        start local 13 // int i
        61: goto 66
        62: .line 954
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.prepStatements:[Ljava/sql/PreparedStatement;
            iload 13 /* i */
            aload 1 /* conn */
            getstatic org.h2.fulltext.FullText$FullTextTrigger.SQL:[Ljava/lang/String;
            iload 13 /* i */
            aaload
        63: .line 955
            iconst_1
        64: .line 954
            invokeinterface java.sql.Connection.prepareStatement:(Ljava/lang/String;I)Ljava/sql/PreparedStatement;
            aastore
        65: .line 953
            iinc 13 /* i */ 1
      StackMap locals:
      StackMap stack:
        66: iload 13 /* i */
            getstatic org.h2.fulltext.FullText$FullTextTrigger.SQL:[Ljava/lang/String;
            arraylength
            if_icmplt 62
        end local 13 // int i
        67: .line 958
      StackMap locals:
      StackMap stack:
            return
        end local 12 // java.sql.PreparedStatement prep
        end local 11 // java.util.ArrayList indexList
        end local 10 // java.util.ArrayList columnList
        end local 9 // java.sql.ResultSet rs
        end local 8 // java.sql.DatabaseMetaData meta
        end local 7 // java.util.ArrayList keyList
        end local 6 // int type
        end local 5 // boolean before
        end local 4 // java.lang.String tableName
        end local 3 // java.lang.String triggerName
        end local 2 // java.lang.String schemaName
        end local 1 // java.sql.Connection conn
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   68     0         this  Lorg/h2/fulltext/FullText$FullTextTrigger;
            0   68     1         conn  Ljava/sql/Connection;
            0   68     2   schemaName  Ljava/lang/String;
            0   68     3  triggerName  Ljava/lang/String;
            0   68     4    tableName  Ljava/lang/String;
            0   68     5       before  Z
            0   68     6         type  I
            4   68     7      keyList  Ljava/util/ArrayList<Ljava/lang/String;>;
            5   68     8         meta  Ljava/sql/DatabaseMetaData;
           10   68     9           rs  Ljava/sql/ResultSet;
           11   68    10   columnList  Ljava/util/ArrayList<Ljava/lang/String;>;
           25   29    11            i  I
           40   68    11    indexList  Ljava/util/ArrayList<Ljava/lang/String;>;
           43   68    12         prep  Ljava/sql/PreparedStatement;
           49   51    13      columns  Ljava/lang/String;
           61   67    13            i  I
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
             Name  Flags
      conn         
      schemaName   
      triggerName  
      tableName    
      before       
      type         

  static boolean isMultiThread(java.sql.Connection);
    descriptor: (Ljava/sql/Connection;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.sql.Connection conn
         0: .line 968
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: aload 0 /* conn */
            invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
            astore 3 /* stat */
        start local 3 // java.sql.Statement stat
         2: .line 969
            aload 3 /* stat */
         3: .line 970
            ldc "SELECT value FROM information_schema.settings WHERE name = 'MULTI_THREADED'"
         4: .line 969
            invokeinterface java.sql.Statement.executeQuery:(Ljava/lang/String;)Ljava/sql/ResultSet;
            astore 4 /* rs */
        start local 4 // java.sql.ResultSet rs
         5: .line 972
            aload 4 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifeq 6
            ldc "0"
            aload 4 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getString:(I)Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            iconst_1
            goto 7
      StackMap locals: java.sql.Connection java.lang.Throwable java.lang.Throwable java.sql.Statement java.sql.ResultSet
      StackMap stack:
         6: iconst_0
         7: .line 973
      StackMap locals:
      StackMap stack: int
            aload 3 /* stat */
            ifnull 8
            aload 3 /* stat */
            invokeinterface java.sql.Statement.close:()V
         8: .line 972
      StackMap locals:
      StackMap stack: int
            ireturn
        end local 4 // java.sql.ResultSet rs
      StackMap locals: java.sql.Connection java.lang.Throwable java.lang.Throwable java.sql.Statement
      StackMap stack: java.lang.Throwable
         9: astore 1
        10: .line 973
            aload 3 /* stat */
            ifnull 11
            aload 3 /* stat */
            invokeinterface java.sql.Statement.close:()V
        end local 3 // java.sql.Statement stat
      StackMap locals:
      StackMap stack:
        11: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: astore 2
            aload 1
            ifnonnull 13
            aload 2
            astore 1
            goto 14
      StackMap locals:
      StackMap stack:
        13: aload 1
            aload 2
            if_acmpeq 14
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        14: aload 1
            athrow
        end local 0 // java.sql.Connection conn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  conn  Ljava/sql/Connection;
            2   11     3  stat  Ljava/sql/Statement;
            5    9     4    rs  Ljava/sql/ResultSet;
      Exception table:
        from    to  target  type
           2     7       9  any
           1     8      12  any
           9    12      12  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      conn  

  public void fire(java.sql.Connection, java.lang.Object[], java.lang.Object[]);
    descriptor: (Ljava/sql/Connection;[Ljava/lang/Object;[Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
        start local 1 // java.sql.Connection conn
        start local 2 // java.lang.Object[] oldRow
        start local 3 // java.lang.Object[] newRow
         0: .line 982
            aload 2 /* oldRow */
            ifnull 8
         1: .line 983
            aload 3 /* newRow */
            ifnull 6
         2: .line 985
            aload 2 /* oldRow */
            aload 3 /* newRow */
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            getfield org.h2.fulltext.IndexInfo.indexColumns:[I
            invokestatic org.h2.fulltext.FullText.hasChanged:([Ljava/lang/Object;[Ljava/lang/Object;[I)Z
            ifeq 10
         3: .line 986
            aload 0 /* this */
            aload 1 /* conn */
            aload 2 /* oldRow */
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.delete:(Ljava/sql/Connection;[Ljava/lang/Object;)V
         4: .line 987
            aload 0 /* this */
            aload 1 /* conn */
            aload 3 /* newRow */
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.insert:(Ljava/sql/Connection;[Ljava/lang/Object;)V
         5: .line 989
            goto 10
         6: .line 991
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* conn */
            aload 2 /* oldRow */
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.delete:(Ljava/sql/Connection;[Ljava/lang/Object;)V
         7: .line 993
            goto 10
      StackMap locals:
      StackMap stack:
         8: aload 3 /* newRow */
            ifnull 10
         9: .line 995
            aload 0 /* this */
            aload 1 /* conn */
            aload 3 /* newRow */
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.insert:(Ljava/sql/Connection;[Ljava/lang/Object;)V
        10: .line 997
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.Object[] newRow
        end local 2 // java.lang.Object[] oldRow
        end local 1 // java.sql.Connection conn
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lorg/h2/fulltext/FullText$FullTextTrigger;
            0   11     1    conn  Ljava/sql/Connection;
            0   11     2  oldRow  [Ljava/lang/Object;
            0   11     3  newRow  [Ljava/lang/Object;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
        Name  Flags
      conn    
      oldRow  
      newRow  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
         0: .line 1004
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.setting:Lorg/h2/fulltext/FullTextSettings;
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            invokevirtual org.h2.fulltext.FullTextSettings.removeIndexInfo:(Lorg/h2/fulltext/IndexInfo;)V
         1: .line 1005
            return
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/fulltext/FullText$FullTextTrigger;

  public void remove();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
         0: .line 1012
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.setting:Lorg/h2/fulltext/FullTextSettings;
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            invokevirtual org.h2.fulltext.FullTextSettings.removeIndexInfo:(Lorg/h2/fulltext/IndexInfo;)V
         1: .line 1013
            return
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/fulltext/FullText$FullTextTrigger;

  protected void insert(java.sql.Connection, java.lang.Object[]);
    descriptor: (Ljava/sql/Connection;[Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=15, args_size=3
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
        start local 1 // java.sql.Connection conn
        start local 2 // java.lang.Object[] row
         0: .line 1022
            aconst_null
            astore 3 /* prepInsertRow */
        start local 3 // java.sql.PreparedStatement prepInsertRow
         1: .line 1023
            aconst_null
            astore 4 /* prepInsertMap */
        start local 4 // java.sql.PreparedStatement prepInsertMap
         2: .line 1025
            aload 0 /* this */
            aload 2 /* row */
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getKey:([Ljava/lang/Object;)Ljava/lang/String;
            astore 5 /* key */
        start local 5 // java.lang.String key
         3: .line 1026
            aload 5 /* key */
            invokevirtual java.lang.String.hashCode:()I
            istore 6 /* hash */
        start local 6 // int hash
         4: .line 1027
            aload 0 /* this */
            aload 1 /* conn */
            iconst_1
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getStatement:(Ljava/sql/Connection;I)Ljava/sql/PreparedStatement;
            astore 3 /* prepInsertRow */
         5: .line 1028
            aload 3 /* prepInsertRow */
            iconst_1
            iload 6 /* hash */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
         6: .line 1029
            aload 3 /* prepInsertRow */
            iconst_2
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            getfield org.h2.fulltext.IndexInfo.id:I
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
         7: .line 1030
            aload 3 /* prepInsertRow */
            iconst_3
            aload 5 /* key */
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
         8: .line 1031
            aload 3 /* prepInsertRow */
            invokeinterface java.sql.PreparedStatement.execute:()Z
            pop
         9: .line 1032
            aload 3 /* prepInsertRow */
            invokeinterface java.sql.PreparedStatement.getGeneratedKeys:()Ljava/sql/ResultSet;
            astore 7 /* rs */
        start local 7 // java.sql.ResultSet rs
        10: .line 1033
            aload 7 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            pop
        11: .line 1034
            aload 7 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getInt:(I)I
            istore 8 /* rowId */
        start local 8 // int rowId
        12: .line 1036
            aload 0 /* this */
            aload 1 /* conn */
            iconst_2
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getStatement:(Ljava/sql/Connection;I)Ljava/sql/PreparedStatement;
            astore 4 /* prepInsertMap */
        13: .line 1037
            aload 4 /* prepInsertMap */
            iconst_1
            iload 8 /* rowId */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
        14: .line 1038
            aload 0 /* this */
            aload 1 /* conn */
            aload 2 /* row */
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getWordIds:(Ljava/sql/Connection;[Ljava/lang/Object;)[I
            astore 9 /* wordIds */
        start local 9 // int[] wordIds
        15: .line 1039
            aload 9 /* wordIds */
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 20
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.sql.PreparedStatement java.sql.PreparedStatement java.lang.String int java.sql.ResultSet int int[] top int int int[]
      StackMap stack:
        16: aload 13
            iload 11
            iaload
            istore 10 /* id */
        start local 10 // int id
        17: .line 1040
            aload 4 /* prepInsertMap */
            iconst_2
            iload 10 /* id */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
        18: .line 1041
            aload 4 /* prepInsertMap */
            invokeinterface java.sql.PreparedStatement.execute:()Z
            pop
        end local 10 // int id
        19: .line 1039
            iinc 11 1
      StackMap locals:
      StackMap stack:
        20: iload 11
            iload 12
            if_icmplt 16
        end local 9 // int[] wordIds
        end local 8 // int rowId
        end local 7 // java.sql.ResultSet rs
        end local 6 // int hash
        end local 5 // java.lang.String key
        21: .line 1043
            goto 27
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.sql.PreparedStatement java.sql.PreparedStatement
      StackMap stack: java.lang.Throwable
        22: astore 14
        23: .line 1044
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.useOwnConnection:Z
            ifeq 26
        24: .line 1045
            aload 3 /* prepInsertRow */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        25: .line 1046
            aload 4 /* prepInsertMap */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        26: .line 1048
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.sql.PreparedStatement java.sql.PreparedStatement top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 14
            athrow
        27: .line 1044
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.sql.PreparedStatement java.sql.PreparedStatement
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.useOwnConnection:Z
            ifeq 30
        28: .line 1045
            aload 3 /* prepInsertRow */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        29: .line 1046
            aload 4 /* prepInsertMap */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        30: .line 1049
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.sql.PreparedStatement prepInsertMap
        end local 3 // java.sql.PreparedStatement prepInsertRow
        end local 2 // java.lang.Object[] row
        end local 1 // java.sql.Connection conn
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   31     0           this  Lorg/h2/fulltext/FullText$FullTextTrigger;
            0   31     1           conn  Ljava/sql/Connection;
            0   31     2            row  [Ljava/lang/Object;
            1   31     3  prepInsertRow  Ljava/sql/PreparedStatement;
            2   31     4  prepInsertMap  Ljava/sql/PreparedStatement;
            3   21     5            key  Ljava/lang/String;
            4   21     6           hash  I
           10   21     7             rs  Ljava/sql/ResultSet;
           12   21     8          rowId  I
           15   21     9        wordIds  [I
           17   19    10             id  I
      Exception table:
        from    to  target  type
           2    22      22  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      conn  
      row   

  protected void delete(java.sql.Connection, java.lang.Object[]);
    descriptor: (Ljava/sql/Connection;[Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=16, args_size=3
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
        start local 1 // java.sql.Connection conn
        start local 2 // java.lang.Object[] row
         0: .line 1058
            aconst_null
            astore 3 /* prepSelectRow */
        start local 3 // java.sql.PreparedStatement prepSelectRow
         1: .line 1059
            aconst_null
            astore 4 /* prepDeleteMap */
        start local 4 // java.sql.PreparedStatement prepDeleteMap
         2: .line 1060
            aconst_null
            astore 5 /* prepDeleteRow */
        start local 5 // java.sql.PreparedStatement prepDeleteRow
         3: .line 1062
            aload 0 /* this */
            aload 2 /* row */
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getKey:([Ljava/lang/Object;)Ljava/lang/String;
            astore 6 /* key */
        start local 6 // java.lang.String key
         4: .line 1063
            aload 6 /* key */
            invokevirtual java.lang.String.hashCode:()I
            istore 7 /* hash */
        start local 7 // int hash
         5: .line 1064
            aload 0 /* this */
            aload 1 /* conn */
            iconst_5
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getStatement:(Ljava/sql/Connection;I)Ljava/sql/PreparedStatement;
            astore 3 /* prepSelectRow */
         6: .line 1065
            aload 3 /* prepSelectRow */
            iconst_1
            iload 7 /* hash */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
         7: .line 1066
            aload 3 /* prepSelectRow */
            iconst_2
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            getfield org.h2.fulltext.IndexInfo.id:I
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
         8: .line 1067
            aload 3 /* prepSelectRow */
            iconst_3
            aload 6 /* key */
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
         9: .line 1068
            aload 3 /* prepSelectRow */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 8 /* rs */
        start local 8 // java.sql.ResultSet rs
        10: .line 1069
            aload 0 /* this */
            aload 1 /* conn */
            iconst_4
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getStatement:(Ljava/sql/Connection;I)Ljava/sql/PreparedStatement;
            astore 4 /* prepDeleteMap */
        11: .line 1070
            aload 0 /* this */
            aload 1 /* conn */
            iconst_3
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getStatement:(Ljava/sql/Connection;I)Ljava/sql/PreparedStatement;
            astore 5 /* prepDeleteRow */
        12: .line 1071
            aload 8 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifeq 33
        13: .line 1072
            aload 8 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getInt:(I)I
            istore 9 /* rowId */
        start local 9 // int rowId
        14: .line 1073
            aload 4 /* prepDeleteMap */
            iconst_1
            iload 9 /* rowId */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
        15: .line 1074
            aload 0 /* this */
            aload 1 /* conn */
            aload 2 /* row */
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getWordIds:(Ljava/sql/Connection;[Ljava/lang/Object;)[I
            astore 10 /* wordIds */
        start local 10 // int[] wordIds
        16: .line 1075
            aload 10 /* wordIds */
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 21
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.sql.PreparedStatement java.sql.PreparedStatement java.sql.PreparedStatement java.lang.String int java.sql.ResultSet int int[] top int int int[]
      StackMap stack:
        17: aload 14
            iload 12
            iaload
            istore 11 /* id */
        start local 11 // int id
        18: .line 1076
            aload 4 /* prepDeleteMap */
            iconst_2
            iload 11 /* id */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
        19: .line 1077
            aload 4 /* prepDeleteMap */
            invokeinterface java.sql.PreparedStatement.executeUpdate:()I
            pop
        end local 11 // int id
        20: .line 1075
            iinc 12 1
      StackMap locals:
      StackMap stack:
        21: iload 12
            iload 13
            if_icmplt 17
        22: .line 1079
            aload 5 /* prepDeleteRow */
            iconst_1
            iload 7 /* hash */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
        23: .line 1080
            aload 5 /* prepDeleteRow */
            iconst_2
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            getfield org.h2.fulltext.IndexInfo.id:I
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
        24: .line 1081
            aload 5 /* prepDeleteRow */
            iconst_3
            aload 6 /* key */
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        25: .line 1082
            aload 5 /* prepDeleteRow */
            invokeinterface java.sql.PreparedStatement.executeUpdate:()I
            pop
        end local 10 // int[] wordIds
        end local 9 // int rowId
        end local 8 // java.sql.ResultSet rs
        end local 7 // int hash
        end local 6 // java.lang.String key
        26: .line 1084
            goto 33
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.sql.PreparedStatement java.sql.PreparedStatement java.sql.PreparedStatement
      StackMap stack: java.lang.Throwable
        27: astore 15
        28: .line 1085
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.useOwnConnection:Z
            ifeq 32
        29: .line 1086
            aload 3 /* prepSelectRow */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        30: .line 1087
            aload 4 /* prepDeleteMap */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        31: .line 1088
            aload 5 /* prepDeleteRow */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        32: .line 1090
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.sql.PreparedStatement java.sql.PreparedStatement java.sql.PreparedStatement top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 15
            athrow
        33: .line 1085
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.sql.PreparedStatement java.sql.PreparedStatement java.sql.PreparedStatement
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.useOwnConnection:Z
            ifeq 37
        34: .line 1086
            aload 3 /* prepSelectRow */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        35: .line 1087
            aload 4 /* prepDeleteMap */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        36: .line 1088
            aload 5 /* prepDeleteRow */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        37: .line 1091
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.sql.PreparedStatement prepDeleteRow
        end local 4 // java.sql.PreparedStatement prepDeleteMap
        end local 3 // java.sql.PreparedStatement prepSelectRow
        end local 2 // java.lang.Object[] row
        end local 1 // java.sql.Connection conn
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   38     0           this  Lorg/h2/fulltext/FullText$FullTextTrigger;
            0   38     1           conn  Ljava/sql/Connection;
            0   38     2            row  [Ljava/lang/Object;
            1   38     3  prepSelectRow  Ljava/sql/PreparedStatement;
            2   38     4  prepDeleteMap  Ljava/sql/PreparedStatement;
            3   38     5  prepDeleteRow  Ljava/sql/PreparedStatement;
            4   26     6            key  Ljava/lang/String;
            5   26     7           hash  I
           10   26     8             rs  Ljava/sql/ResultSet;
           14   26     9          rowId  I
           16   26    10        wordIds  [I
           18   20    11             id  I
      Exception table:
        from    to  target  type
           3    27      27  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      conn  
      row   

  private int[] getWordIds(java.sql.Connection, java.lang.Object[]);
    descriptor: (Ljava/sql/Connection;[Ljava/lang/Object;)[I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=14, args_size=3
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
        start local 1 // java.sql.Connection conn
        start local 2 // java.lang.Object[] row
         0: .line 1094
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 3 /* words */
        start local 3 // java.util.HashSet words
         1: .line 1095
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            getfield org.h2.fulltext.IndexInfo.indexColumns:[I
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 15
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet top int int int[]
      StackMap stack:
         2: aload 7
            iload 5
            iaload
            istore 4 /* idx */
        start local 4 // int idx
         3: .line 1096
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.columnTypes:[I
            iload 4 /* idx */
            iaload
            istore 8 /* type */
        start local 8 // int type
         4: .line 1097
            aload 2 /* row */
            iload 4 /* idx */
            aaload
            astore 9 /* data */
        start local 9 // java.lang.Object data
         5: .line 1098
            iload 8 /* type */
            sipush 2005
            if_icmpne 12
            aload 9 /* data */
            ifnull 12
         6: .line 1100
            aload 9 /* data */
            instanceof java.io.Reader
            ifeq 9
         7: .line 1101
            aload 9 /* data */
            checkcast java.io.Reader
            astore 10 /* reader */
        start local 10 // java.io.Reader reader
         8: .line 1102
            goto 10
        end local 10 // java.io.Reader reader
         9: .line 1103
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet int int int int[] int java.lang.Object
      StackMap stack:
            aload 9 /* data */
            checkcast java.sql.Clob
            invokeinterface java.sql.Clob.getCharacterStream:()Ljava/io/Reader;
            astore 10 /* reader */
        start local 10 // java.io.Reader reader
        10: .line 1105
      StackMap locals: java.io.Reader
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.setting:Lorg/h2/fulltext/FullTextSettings;
            aload 3 /* words */
            aload 10 /* reader */
            invokestatic org.h2.fulltext.FullText.addWords:(Lorg/h2/fulltext/FullTextSettings;Ljava/util/Set;Ljava/io/Reader;)V
        end local 10 // java.io.Reader reader
        11: .line 1106
            goto 14
        12: .line 1107
      StackMap locals:
      StackMap stack:
            aload 9 /* data */
            iload 8 /* type */
            invokestatic org.h2.fulltext.FullText.asString:(Ljava/lang/Object;I)Ljava/lang/String;
            astore 10 /* string */
        start local 10 // java.lang.String string
        13: .line 1108
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.setting:Lorg/h2/fulltext/FullTextSettings;
            aload 3 /* words */
            aload 10 /* string */
            invokestatic org.h2.fulltext.FullText.addWords:(Lorg/h2/fulltext/FullTextSettings;Ljava/util/Set;Ljava/lang/String;)V
        end local 10 // java.lang.String string
        end local 9 // java.lang.Object data
        end local 8 // int type
        end local 4 // int idx
        14: .line 1095
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet top int int int[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        15: iload 5
            iload 6
            if_icmplt 2
        16: .line 1111
            aconst_null
            astore 4 /* prepInsertWord */
        start local 4 // java.sql.PreparedStatement prepInsertWord
        17: .line 1113
            aload 0 /* this */
            aload 1 /* conn */
            iconst_0
            invokevirtual org.h2.fulltext.FullText$FullTextTrigger.getStatement:(Ljava/sql/Connection;I)Ljava/sql/PreparedStatement;
            astore 4 /* prepInsertWord */
        18: .line 1114
            aload 3 /* words */
            invokevirtual java.util.HashSet.size:()I
            newarray 10
            astore 5 /* wordIds */
        start local 5 // int[] wordIds
        19: .line 1115
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        20: .line 1116
            aload 3 /* words */
            invokevirtual java.util.HashSet.iterator:()Ljava/util/Iterator;
            astore 8
            goto 35
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet java.sql.PreparedStatement int[] int top java.util.Iterator
      StackMap stack:
        21: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* word */
        start local 7 // java.lang.String word
        22: .line 1119
            goto 32
        start local 10 // java.lang.Integer wId
        23: .line 1120
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet java.sql.PreparedStatement int[] int java.lang.String java.util.Iterator top java.lang.Integer
      StackMap stack:
            aload 4 /* prepInsertWord */
            iconst_1
            aload 7 /* word */
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        24: .line 1121
            aload 4 /* prepInsertWord */
            invokeinterface java.sql.PreparedStatement.execute:()Z
            pop
        25: .line 1122
            aload 4 /* prepInsertWord */
            invokeinterface java.sql.PreparedStatement.getGeneratedKeys:()Ljava/sql/ResultSet;
            astore 11 /* rs */
        start local 11 // java.sql.ResultSet rs
        26: .line 1123
            aload 11 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifeq 32
        27: .line 1124
            aload 11 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getInt:(I)I
            istore 9 /* wordId */
        start local 9 // int wordId
        28: .line 1125
            iload 9 /* wordId */
            ifeq 32
        29: .line 1126
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.setting:Lorg/h2/fulltext/FullTextSettings;
            aload 7 /* word */
            iload 9 /* wordId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.h2.fulltext.FullTextSettings.addWord:(Ljava/lang/String;Ljava/lang/Integer;)V
        30: .line 1127
            iload 9 /* wordId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 10 /* wId */
        31: .line 1128
            goto 34
        end local 11 // java.sql.ResultSet rs
        end local 10 // java.lang.Integer wId
        end local 9 // int wordId
        32: .line 1119
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet java.sql.PreparedStatement int[] int java.lang.String java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.setting:Lorg/h2/fulltext/FullTextSettings;
            aload 7 /* word */
            invokevirtual org.h2.fulltext.FullTextSettings.getWordId:(Ljava/lang/String;)Ljava/lang/Integer;
            dup
            astore 10 /* wId */
        start local 10 // java.lang.Integer wId
        33: ifnull 23
        34: .line 1132
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet java.sql.PreparedStatement int[] int java.lang.String java.util.Iterator top java.lang.Integer
      StackMap stack:
            aload 5 /* wordIds */
            iload 6 /* i */
            iinc 6 /* i */ 1
            aload 10 /* wId */
            invokevirtual java.lang.Integer.intValue:()I
            iastore
        end local 10 // java.lang.Integer wId
        end local 7 // java.lang.String word
        35: .line 1116
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet java.sql.PreparedStatement int[] int top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 21
        36: .line 1134
            aload 5 /* wordIds */
            invokestatic java.util.Arrays.sort:([I)V
        37: .line 1135
            aload 5 /* wordIds */
            astore 13
        38: .line 1137
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.useOwnConnection:Z
            ifeq 40
        39: .line 1138
            aload 4 /* prepInsertWord */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        40: .line 1135
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet java.sql.PreparedStatement int[] int top top top top top top int[]
      StackMap stack:
            aload 13
            areturn
        end local 6 // int i
        end local 5 // int[] wordIds
        41: .line 1136
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet java.sql.PreparedStatement
      StackMap stack: java.lang.Throwable
            astore 12
        42: .line 1137
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.useOwnConnection:Z
            ifeq 44
        43: .line 1138
            aload 4 /* prepInsertWord */
            invokestatic org.h2.util.IOUtils.closeSilently:(Ljava/lang/AutoCloseable;)V
        44: .line 1140
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.sql.Connection java.lang.Object[] java.util.HashSet java.sql.PreparedStatement top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 12
            athrow
        end local 4 // java.sql.PreparedStatement prepInsertWord
        end local 3 // java.util.HashSet words
        end local 2 // java.lang.Object[] row
        end local 1 // java.sql.Connection conn
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   45     0            this  Lorg/h2/fulltext/FullText$FullTextTrigger;
            0   45     1            conn  Ljava/sql/Connection;
            0   45     2             row  [Ljava/lang/Object;
            1   45     3           words  Ljava/util/HashSet<Ljava/lang/String;>;
            3   14     4             idx  I
            4   14     8            type  I
            5   14     9            data  Ljava/lang/Object;
            8    9    10          reader  Ljava/io/Reader;
           10   11    10          reader  Ljava/io/Reader;
           13   14    10          string  Ljava/lang/String;
           17   45     4  prepInsertWord  Ljava/sql/PreparedStatement;
           19   41     5         wordIds  [I
           20   41     6               i  I
           22   35     7            word  Ljava/lang/String;
           28   32     9          wordId  I
           23   32    10             wId  Ljava/lang/Integer;
           33   35    10             wId  Ljava/lang/Integer;
           26   32    11              rs  Ljava/sql/ResultSet;
      Exception table:
        from    to  target  type
          17    38      41  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      conn  
      row   

  private java.lang.String getKey(java.lang.Object[]);
    descriptor: ([Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
        start local 1 // java.lang.Object[] row
         0: .line 1144
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* builder */
        start local 2 // java.lang.StringBuilder builder
         1: .line 1145
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            getfield org.h2.fulltext.IndexInfo.keys:[I
            astore 3 /* keys */
        start local 3 // int[] keys
         2: .line 1146
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: aload 3 /* keys */
            arraylength
            istore 5 /* l */
        start local 5 // int l
         4: goto 15
         5: .line 1147
      StackMap locals: org.h2.fulltext.FullText$FullTextTrigger java.lang.Object[] java.lang.StringBuilder int[] int int
      StackMap stack:
            iload 4 /* i */
            ifle 7
         6: .line 1148
            aload 2 /* builder */
            ldc " AND "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 1150
      StackMap locals:
      StackMap stack:
            aload 3 /* keys */
            iload 4 /* i */
            iaload
            istore 6 /* columnIndex */
        start local 6 // int columnIndex
         8: .line 1151
            aload 2 /* builder */
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.index:Lorg/h2/fulltext/IndexInfo;
            getfield org.h2.fulltext.IndexInfo.columns:[Ljava/lang/String;
            iload 6 /* columnIndex */
            aaload
            invokestatic org.h2.util.StringUtils.quoteIdentifier:(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 1152
            aload 1 /* row */
            iload 6 /* columnIndex */
            aaload
            astore 7 /* o */
        start local 7 // java.lang.Object o
        10: .line 1153
            aload 7 /* o */
            ifnonnull 13
        11: .line 1154
            aload 2 /* builder */
            ldc " IS NULL"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 1155
            goto 14
        13: .line 1156
      StackMap locals: int java.lang.Object
      StackMap stack:
            aload 2 /* builder */
            bipush 61
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 7 /* o */
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.columnTypes:[I
            iload 6 /* columnIndex */
            iaload
            invokestatic org.h2.fulltext.FullText.quoteSQL:(Ljava/lang/Object;I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 7 // java.lang.Object o
        end local 6 // int columnIndex
        14: .line 1146
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 4 /* i */
            iload 5 /* l */
            if_icmplt 5
        end local 5 // int l
        end local 4 // int i
        16: .line 1159
            aload 2 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // int[] keys
        end local 2 // java.lang.StringBuilder builder
        end local 1 // java.lang.Object[] row
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0         this  Lorg/h2/fulltext/FullText$FullTextTrigger;
            0   17     1          row  [Ljava/lang/Object;
            1   17     2      builder  Ljava/lang/StringBuilder;
            2   17     3         keys  [I
            3   16     4            i  I
            4   16     5            l  I
            8   14     6  columnIndex  I
           10   14     7            o  Ljava/lang/Object;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      row   

  private java.sql.PreparedStatement getStatement(java.sql.Connection, int);
    descriptor: (Ljava/sql/Connection;I)Ljava/sql/PreparedStatement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.h2.fulltext.FullText$FullTextTrigger this
        start local 1 // java.sql.Connection conn
        start local 2 // int index
         0: .line 1163
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.useOwnConnection:Z
            ifeq 2
         1: .line 1164
            aload 1 /* conn */
            getstatic org.h2.fulltext.FullText$FullTextTrigger.SQL:[Ljava/lang/String;
            iload 2 /* index */
            aaload
            iconst_1
            invokeinterface java.sql.Connection.prepareStatement:(Ljava/lang/String;I)Ljava/sql/PreparedStatement;
            goto 3
         2: .line 1165
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.fulltext.FullText$FullTextTrigger.prepStatements:[Ljava/sql/PreparedStatement;
            iload 2 /* index */
            aaload
         3: .line 1163
      StackMap locals:
      StackMap stack: java.sql.PreparedStatement
            areturn
        end local 2 // int index
        end local 1 // java.sql.Connection conn
        end local 0 // org.h2.fulltext.FullText$FullTextTrigger this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/h2/fulltext/FullText$FullTextTrigger;
            0    4     1   conn  Ljava/sql/Connection;
            0    4     2  index  I
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
       Name  Flags
      conn   
      index  
}
SourceFile: "FullText.java"
NestHost: org.h2.fulltext.FullText
InnerClasses:
  public final FullTextTrigger = org.h2.fulltext.FullText$FullTextTrigger of org.h2.fulltext.FullText