public class org.apache.cassandra.cql3.statements.CreateIndexStatement extends org.apache.cassandra.cql3.statements.SchemaAlteringStatement
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.cql3.statements.CreateIndexStatement
  super_class: org.apache.cassandra.cql3.statements.SchemaAlteringStatement
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.lang.String indexName;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<org.apache.cassandra.cql3.statements.IndexTarget$Raw> rawTargets;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/apache/cassandra/cql3/statements/IndexTarget$Raw;>;

  private final org.apache.cassandra.cql3.statements.IndexPropDefs properties;
    descriptor: Lorg/apache/cassandra/cql3/statements/IndexPropDefs;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean ifNotExists;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 57
            ldc Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.cql3.statements.CreateIndexStatement.logger:Lorg/slf4j/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.cassandra.cql3.CFName, org.apache.cassandra.cql3.IndexName, java.util.List<org.apache.cassandra.cql3.statements.IndexTarget$Raw>, org.apache.cassandra.cql3.statements.IndexPropDefs, );
    descriptor: (Lorg/apache/cassandra/cql3/CFName;Lorg/apache/cassandra/cql3/IndexName;Ljava/util/List;Lorg/apache/cassandra/cql3/statements/IndexPropDefs;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=6
        start local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
        start local 1 // org.apache.cassandra.cql3.CFName name
        start local 2 // org.apache.cassandra.cql3.IndexName indexName
        start local 3 // java.util.List targets
        start local 4 // org.apache.cassandra.cql3.statements.IndexPropDefs properties
        start local 5 // boolean ifNotExists
         0: .line 70
            aload 0 /* this */
            aload 1 /* name */
            invokespecial org.apache.cassandra.cql3.statements.SchemaAlteringStatement.<init>:(Lorg/apache/cassandra/cql3/CFName;)V
         1: .line 71
            aload 0 /* this */
            aload 2 /* indexName */
            invokevirtual org.apache.cassandra.cql3.IndexName.getIdx:()Ljava/lang/String;
            putfield org.apache.cassandra.cql3.statements.CreateIndexStatement.indexName:Ljava/lang/String;
         2: .line 72
            aload 0 /* this */
            aload 3 /* targets */
            putfield org.apache.cassandra.cql3.statements.CreateIndexStatement.rawTargets:Ljava/util/List;
         3: .line 73
            aload 0 /* this */
            aload 4 /* properties */
            putfield org.apache.cassandra.cql3.statements.CreateIndexStatement.properties:Lorg/apache/cassandra/cql3/statements/IndexPropDefs;
         4: .line 74
            aload 0 /* this */
            iload 5 /* ifNotExists */
            putfield org.apache.cassandra.cql3.statements.CreateIndexStatement.ifNotExists:Z
         5: .line 75
            return
        end local 5 // boolean ifNotExists
        end local 4 // org.apache.cassandra.cql3.statements.IndexPropDefs properties
        end local 3 // java.util.List targets
        end local 2 // org.apache.cassandra.cql3.IndexName indexName
        end local 1 // org.apache.cassandra.cql3.CFName name
        end local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            0    6     1         name  Lorg/apache/cassandra/cql3/CFName;
            0    6     2    indexName  Lorg/apache/cassandra/cql3/IndexName;
            0    6     3      targets  Ljava/util/List<Lorg/apache/cassandra/cql3/statements/IndexTarget$Raw;>;
            0    6     4   properties  Lorg/apache/cassandra/cql3/statements/IndexPropDefs;
            0    6     5  ifNotExists  Z
    Signature: (Lorg/apache/cassandra/cql3/CFName;Lorg/apache/cassandra/cql3/IndexName;Ljava/util/List<Lorg/apache/cassandra/cql3/statements/IndexTarget$Raw;>;Lorg/apache/cassandra/cql3/statements/IndexPropDefs;Z)V
    MethodParameters:
             Name  Flags
      name         
      indexName    
      targets      
      properties   
      ifNotExists  

  public void checkAccess(org.apache.cassandra.service.ClientState);
    descriptor: (Lorg/apache/cassandra/service/ClientState;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
        start local 1 // org.apache.cassandra.service.ClientState state
         0: .line 79
            aload 1 /* state */
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.keyspace:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.columnFamily:()Ljava/lang/String;
            getstatic org.apache.cassandra.auth.Permission.ALTER:Lorg/apache/cassandra/auth/Permission;
            invokevirtual org.apache.cassandra.service.ClientState.hasColumnFamilyAccess:(Ljava/lang/String;Ljava/lang/String;Lorg/apache/cassandra/auth/Permission;)V
         1: .line 80
            return
        end local 1 // org.apache.cassandra.service.ClientState state
        end local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            0    2     1  state  Lorg/apache/cassandra/service/ClientState;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException, org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
       Name  Flags
      state  

  public void validate(org.apache.cassandra.service.ClientState);
    descriptor: (Lorg/apache/cassandra/service/ClientState;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=9, args_size=2
        start local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
        start local 1 // org.apache.cassandra.service.ClientState state
         0: .line 84
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.keyspace:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.columnFamily:()Ljava/lang/String;
            invokestatic org.apache.cassandra.thrift.ThriftValidation.validateColumnFamily:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/config/CFMetaData;
            astore 2 /* cfm */
        start local 2 // org.apache.cassandra.config.CFMetaData cfm
         1: .line 86
            aload 2 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.isCounter:()Z
            ifeq 3
         2: .line 87
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Secondary indexes are not supported on counter tables"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 89
      StackMap locals: org.apache.cassandra.config.CFMetaData
      StackMap stack:
            aload 2 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.isView:()Z
            ifeq 5
         4: .line 90
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Secondary indexes are not supported on materialized views"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 92
      StackMap locals:
      StackMap stack:
            aload 2 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.isCompactTable:()Z
            ifeq 7
            aload 2 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.isStaticCompactTable:()Z
            ifne 7
         6: .line 93
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Secondary indexes are not supported on COMPACT STORAGE tables that have clustering columns"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 95
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.rawTargets:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 3 /* targets */
        start local 3 // java.util.List targets
         8: .line 96
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.rawTargets:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 11
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.ClientState org.apache.cassandra.config.CFMetaData java.util.List top java.util.Iterator
      StackMap stack:
         9: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.cql3.statements.IndexTarget$Raw
            astore 4 /* rawTarget */
        start local 4 // org.apache.cassandra.cql3.statements.IndexTarget$Raw rawTarget
        10: .line 97
            aload 3 /* targets */
            aload 4 /* rawTarget */
            aload 2 /* cfm */
            invokevirtual org.apache.cassandra.cql3.statements.IndexTarget$Raw.prepare:(Lorg/apache/cassandra/config/CFMetaData;)Lorg/apache/cassandra/cql3/statements/IndexTarget;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // org.apache.cassandra.cql3.statements.IndexTarget$Raw rawTarget
        11: .line 96
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        12: .line 99
            aload 3 /* targets */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 14
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.properties:Lorg/apache/cassandra/cql3/statements/IndexPropDefs;
            getfield org.apache.cassandra.cql3.statements.IndexPropDefs.isCustom:Z
            ifne 14
        13: .line 100
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Only CUSTOM indexes can be created without specifying a target column"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 102
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.ClientState org.apache.cassandra.config.CFMetaData java.util.List
      StackMap stack:
            aload 3 /* targets */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmple 16
        15: .line 103
            aload 0 /* this */
            aload 3 /* targets */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.validateTargetsForMultiColumnIndex:(Ljava/util/List;)V
        16: .line 105
      StackMap locals:
      StackMap stack:
            aload 3 /* targets */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 46
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.ClientState org.apache.cassandra.config.CFMetaData java.util.List top java.util.Iterator
      StackMap stack:
        17: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.cql3.statements.IndexTarget
            astore 4 /* target */
        start local 4 // org.apache.cassandra.cql3.statements.IndexTarget target
        18: .line 107
            aload 2 /* cfm */
            aload 4 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.column:Lorg/apache/cassandra/cql3/ColumnIdentifier;
            invokevirtual org.apache.cassandra.config.CFMetaData.getColumnDefinition:(Lorg/apache/cassandra/cql3/ColumnIdentifier;)Lorg/apache/cassandra/config/ColumnDefinition;
            astore 6 /* cd */
        start local 6 // org.apache.cassandra.config.ColumnDefinition cd
        19: .line 109
            aload 6 /* cd */
            ifnonnull 21
        20: .line 110
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No column definition found for column "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.column:Lorg/apache/cassandra/cql3/ColumnIdentifier;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 112
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.ClientState org.apache.cassandra.config.CFMetaData java.util.List org.apache.cassandra.cql3.statements.IndexTarget java.util.Iterator org.apache.cassandra.config.ColumnDefinition
      StackMap stack:
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.referencesDuration:()Z
            ifeq 26
        22: .line 114
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.isCollection:()Z
            ldc "Secondary indexes are not supported on collections containing durations"
            invokestatic org.apache.cassandra.cql3.statements.RequestValidations.checkFalse:(ZLjava/lang/String;)V
        23: .line 115
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.isTuple:()Z
            ldc "Secondary indexes are not supported on tuples containing durations"
            invokestatic org.apache.cassandra.cql3.statements.RequestValidations.checkFalse:(ZLjava/lang/String;)V
        24: .line 116
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.isUDT:()Z
            ldc "Secondary indexes are not supported on UDTs containing durations"
            invokestatic org.apache.cassandra.cql3.statements.RequestValidations.checkFalse:(ZLjava/lang/String;)V
        25: .line 117
            ldc "Secondary indexes are not supported on duration columns"
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.cassandra.cql3.statements.RequestValidations.invalidRequest:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/apache/cassandra/exceptions/InvalidRequestException;
            athrow
        26: .line 121
      StackMap locals:
      StackMap stack:
            aload 2 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.isCompactTable:()Z
            ifeq 31
        27: .line 123
            aload 6 /* cd */
            invokevirtual org.apache.cassandra.config.ColumnDefinition.isPrimaryKeyColumn:()Z
            ifeq 29
        28: .line 124
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Secondary indexes are not supported on PRIMARY KEY columns in COMPACT STORAGE tables"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        29: .line 125
      StackMap locals:
      StackMap stack:
            aload 2 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.compactValueColumn:()Lorg/apache/cassandra/config/ColumnDefinition;
            aload 6 /* cd */
            invokevirtual org.apache.cassandra.config.ColumnDefinition.equals:(Ljava/lang/Object;)Z
            ifeq 31
        30: .line 126
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Secondary indexes are not supported on compact value column of COMPACT STORAGE tables"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        31: .line 129
      StackMap locals:
      StackMap stack:
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.kind:Lorg/apache/cassandra/config/ColumnDefinition$Kind;
            getstatic org.apache.cassandra.config.ColumnDefinition$Kind.PARTITION_KEY:Lorg/apache/cassandra/config/ColumnDefinition$Kind;
            if_acmpne 33
            aload 2 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.getKeyValidatorAsClusteringComparator:()Lorg/apache/cassandra/db/ClusteringComparator;
            invokevirtual org.apache.cassandra.db.ClusteringComparator.size:()I
            iconst_1
            if_icmpne 33
        32: .line 130
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Cannot create secondary index on partition key column %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.column:Lorg/apache/cassandra/cql3/ColumnIdentifier;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        33: .line 132
      StackMap locals:
      StackMap stack:
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            instanceof org.apache.cassandra.db.marshal.MapType
            istore 7 /* isMap */
        start local 7 // boolean isMap
        34: .line 133
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.isCollection:()Z
            ifeq 35
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.isMultiCell:()Z
            ifne 35
            iconst_1
            goto 36
      StackMap locals: int
      StackMap stack:
        35: iconst_0
      StackMap locals:
      StackMap stack: int
        36: istore 8 /* isFrozenCollection */
        start local 8 // boolean isFrozenCollection
        37: .line 134
            iload 8 /* isFrozenCollection */
            ifeq 40
        38: .line 136
            aload 0 /* this */
            aload 4 /* target */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.validateForFrozenCollection:(Lorg/apache/cassandra/cql3/statements/IndexTarget;)V
        39: .line 137
            goto 43
        40: .line 140
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 4 /* target */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.validateNotFullIndex:(Lorg/apache/cassandra/cql3/statements/IndexTarget;)V
        41: .line 141
            aload 0 /* this */
            aload 6 /* cd */
            aload 4 /* target */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.validateIsSimpleIndexIfTargetColumnNotCollection:(Lorg/apache/cassandra/config/ColumnDefinition;Lorg/apache/cassandra/cql3/statements/IndexTarget;)V
        42: .line 142
            aload 0 /* this */
            iload 7 /* isMap */
            aload 4 /* target */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.validateTargetColumnIsMapIfIndexInvolvesKeys:(ZLorg/apache/cassandra/cql3/statements/IndexTarget;)V
        43: .line 145
      StackMap locals:
      StackMap stack:
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.isUDT:()Z
            ifeq 44
            aload 6 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.isMultiCell:()Z
            ifeq 44
            iconst_1
            goto 45
      StackMap locals:
      StackMap stack:
        44: iconst_0
      StackMap locals:
      StackMap stack: int
        45: ldc "Secondary indexes are not supported on non-frozen UDTs"
            invokestatic org.apache.cassandra.cql3.statements.RequestValidations.checkFalse:(ZLjava/lang/String;)V
        end local 8 // boolean isFrozenCollection
        end local 7 // boolean isMap
        end local 6 // org.apache.cassandra.config.ColumnDefinition cd
        end local 4 // org.apache.cassandra.cql3.statements.IndexTarget target
        46: .line 105
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.ClientState org.apache.cassandra.config.CFMetaData java.util.List top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 17
        47: .line 148
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.indexName:Ljava/lang/String;
            invokestatic com.google.common.base.Strings.isNullOrEmpty:(Ljava/lang/String;)Z
            ifne 52
        48: .line 150
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.keyspace:()Ljava/lang/String;
            invokevirtual org.apache.cassandra.config.Schema.getKSMetaData:(Ljava/lang/String;)Lorg/apache/cassandra/schema/KeyspaceMetadata;
            aconst_null
            invokevirtual org.apache.cassandra.schema.KeyspaceMetadata.existingIndexNames:(Ljava/lang/String;)Ljava/util/Set;
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.indexName:Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 52
        49: .line 152
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.ifNotExists:Z
            ifeq 51
        50: .line 153
            return
        51: .line 155
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.ClientState org.apache.cassandra.config.CFMetaData java.util.List
      StackMap stack:
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Index %s already exists"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.indexName:Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        52: .line 159
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.properties:Lorg/apache/cassandra/cql3/statements/IndexPropDefs;
            invokevirtual org.apache.cassandra.cql3.statements.IndexPropDefs.validate:()V
        53: .line 160
            return
        end local 3 // java.util.List targets
        end local 2 // org.apache.cassandra.config.CFMetaData cfm
        end local 1 // org.apache.cassandra.service.ClientState state
        end local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   54     0                this  Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            0   54     1               state  Lorg/apache/cassandra/service/ClientState;
            1   54     2                 cfm  Lorg/apache/cassandra/config/CFMetaData;
            8   54     3             targets  Ljava/util/List<Lorg/apache/cassandra/cql3/statements/IndexTarget;>;
           10   11     4           rawTarget  Lorg/apache/cassandra/cql3/statements/IndexTarget$Raw;
           18   46     4              target  Lorg/apache/cassandra/cql3/statements/IndexTarget;
           19   46     6                  cd  Lorg/apache/cassandra/config/ColumnDefinition;
           34   46     7               isMap  Z
           37   46     8  isFrozenCollection  Z
    Exceptions:
      throws org.apache.cassandra.exceptions.RequestValidationException
    MethodParameters:
       Name  Flags
      state  

  private void validateForFrozenCollection(org.apache.cassandra.cql3.statements.IndexTarget);
    descriptor: (Lorg/apache/cassandra/cql3/statements/IndexTarget;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
        start local 1 // org.apache.cassandra.cql3.statements.IndexTarget target
         0: .line 164
            aload 1 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.type:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            getstatic org.apache.cassandra.cql3.statements.IndexTarget$Type.FULL:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            if_acmpeq 4
         1: .line 165
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Cannot create %s() index on frozen column %s. Frozen collections only support full() indexes"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 167
            aload 1 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.type:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            aastore
            dup
            iconst_1
            aload 1 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.column:Lorg/apache/cassandra/cql3/ColumnIdentifier;
            aastore
         3: .line 165
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 168
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.apache.cassandra.cql3.statements.IndexTarget target
        end local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            0    5     1  target  Lorg/apache/cassandra/cql3/statements/IndexTarget;
    Exceptions:
      throws org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
        Name  Flags
      target  

  private void validateNotFullIndex(org.apache.cassandra.cql3.statements.IndexTarget);
    descriptor: (Lorg/apache/cassandra/cql3/statements/IndexTarget;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
        start local 1 // org.apache.cassandra.cql3.statements.IndexTarget target
         0: .line 172
            aload 1 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.type:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            getstatic org.apache.cassandra.cql3.statements.IndexTarget$Type.FULL:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            if_acmpne 2
         1: .line 173
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "full() indexes can only be created on frozen collections"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 174
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.apache.cassandra.cql3.statements.IndexTarget target
        end local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            0    3     1  target  Lorg/apache/cassandra/cql3/statements/IndexTarget;
    Exceptions:
      throws org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
        Name  Flags
      target  

  private void validateIsSimpleIndexIfTargetColumnNotCollection(org.apache.cassandra.config.ColumnDefinition, org.apache.cassandra.cql3.statements.IndexTarget);
    descriptor: (Lorg/apache/cassandra/config/ColumnDefinition;Lorg/apache/cassandra/cql3/statements/IndexTarget;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
        start local 1 // org.apache.cassandra.config.ColumnDefinition cd
        start local 2 // org.apache.cassandra.cql3.statements.IndexTarget target
         0: .line 178
            aload 1 /* cd */
            getfield org.apache.cassandra.config.ColumnDefinition.type:Lorg/apache/cassandra/db/marshal/AbstractType;
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.isCollection:()Z
            ifne 4
            aload 2 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.type:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            getstatic org.apache.cassandra.cql3.statements.IndexTarget$Type.SIMPLE:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            if_acmpeq 4
         1: .line 179
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Cannot create %s() index on %s. Non-collection columns support only simple indexes"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 181
            aload 2 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.type:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            invokevirtual org.apache.cassandra.cql3.statements.IndexTarget$Type.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.column:Lorg/apache/cassandra/cql3/ColumnIdentifier;
            aastore
         3: .line 179
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 182
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.cassandra.cql3.statements.IndexTarget target
        end local 1 // org.apache.cassandra.config.ColumnDefinition cd
        end local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            0    5     1      cd  Lorg/apache/cassandra/config/ColumnDefinition;
            0    5     2  target  Lorg/apache/cassandra/cql3/statements/IndexTarget;
    Exceptions:
      throws org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
        Name  Flags
      cd      
      target  

  private void validateTargetColumnIsMapIfIndexInvolvesKeys(boolean, org.apache.cassandra.cql3.statements.IndexTarget);
    descriptor: (ZLorg/apache/cassandra/cql3/statements/IndexTarget;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
        start local 1 // boolean isMap
        start local 2 // org.apache.cassandra.cql3.statements.IndexTarget target
         0: .line 186
            aload 2 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.type:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            getstatic org.apache.cassandra.cql3.statements.IndexTarget$Type.KEYS:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            if_acmpeq 1
            aload 2 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.type:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            getstatic org.apache.cassandra.cql3.statements.IndexTarget$Type.KEYS_AND_VALUES:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            if_acmpne 5
         1: .line 188
      StackMap locals:
      StackMap stack:
            iload 1 /* isMap */
            ifne 5
         2: .line 189
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Cannot create index on %s of column %s with non-map type"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         3: .line 190
            aload 2 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.type:Lorg/apache/cassandra/cql3/statements/IndexTarget$Type;
            aastore
            dup
            iconst_1
            aload 2 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.column:Lorg/apache/cassandra/cql3/ColumnIdentifier;
            aastore
         4: .line 189
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 192
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.cassandra.cql3.statements.IndexTarget target
        end local 1 // boolean isMap
        end local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            0    6     1   isMap  Z
            0    6     2  target  Lorg/apache/cassandra/cql3/statements/IndexTarget;
    Exceptions:
      throws org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
        Name  Flags
      isMap   
      target  

  private void validateTargetsForMultiColumnIndex(java.util.List<org.apache.cassandra.cql3.statements.IndexTarget>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
        start local 1 // java.util.List targets
         0: .line 196
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.properties:Lorg/apache/cassandra/cql3/statements/IndexPropDefs;
            getfield org.apache.cassandra.cql3.statements.IndexPropDefs.isCustom:Z
            ifne 2
         1: .line 197
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Only CUSTOM indexes support multiple columns"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 199
      StackMap locals:
      StackMap stack:
            aload 1 /* targets */
            invokeinterface java.util.List.size:()I
            invokestatic com.google.common.collect.Sets.newHashSetWithExpectedSize:(I)Ljava/util/HashSet;
            astore 2 /* columns */
        start local 2 // java.util.Set columns
         3: .line 200
            aload 1 /* targets */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement java.util.List java.util.Set top java.util.Iterator
      StackMap stack:
         4: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.cql3.statements.IndexTarget
            astore 3 /* target */
        start local 3 // org.apache.cassandra.cql3.statements.IndexTarget target
         5: .line 201
            aload 2 /* columns */
            aload 3 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.column:Lorg/apache/cassandra/cql3/ColumnIdentifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            ifne 7
         6: .line 202
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Duplicate column "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* target */
            getfield org.apache.cassandra.cql3.statements.IndexTarget.column:Lorg/apache/cassandra/cql3/ColumnIdentifier;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " in index target list"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // org.apache.cassandra.cql3.statements.IndexTarget target
         7: .line 200
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         8: .line 203
            return
        end local 2 // java.util.Set columns
        end local 1 // java.util.List targets
        end local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            0    9     1  targets  Ljava/util/List<Lorg/apache/cassandra/cql3/statements/IndexTarget;>;
            3    9     2  columns  Ljava/util/Set<Lorg/apache/cassandra/cql3/ColumnIdentifier;>;
            5    7     3   target  Lorg/apache/cassandra/cql3/statements/IndexTarget;
    Signature: (Ljava/util/List<Lorg/apache/cassandra/cql3/statements/IndexTarget;>;)V
    MethodParameters:
         Name  Flags
      targets  

  public org.apache.cassandra.transport.Event$SchemaChange announceMigration(org.apache.cassandra.service.QueryState, boolean);
    descriptor: (Lorg/apache/cassandra/service/QueryState;Z)Lorg/apache/cassandra/transport/Event$SchemaChange;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=10, args_size=3
        start local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
        start local 1 // org.apache.cassandra.service.QueryState queryState
        start local 2 // boolean isLocalOnly
         0: .line 207
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.keyspace:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.columnFamily:()Ljava/lang/String;
            invokevirtual org.apache.cassandra.config.Schema.getCFMetaData:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/config/CFMetaData;
            invokevirtual org.apache.cassandra.config.CFMetaData.copy:()Lorg/apache/cassandra/config/CFMetaData;
            astore 3 /* cfm */
        start local 3 // org.apache.cassandra.config.CFMetaData cfm
         1: .line 208
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.rawTargets:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 4 /* targets */
        start local 4 // java.util.List targets
         2: .line 209
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.rawTargets:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 5
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.QueryState int org.apache.cassandra.config.CFMetaData java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.cql3.statements.IndexTarget$Raw
            astore 5 /* rawTarget */
        start local 5 // org.apache.cassandra.cql3.statements.IndexTarget$Raw rawTarget
         4: .line 210
            aload 4 /* targets */
            aload 5 /* rawTarget */
            aload 3 /* cfm */
            invokevirtual org.apache.cassandra.cql3.statements.IndexTarget$Raw.prepare:(Lorg/apache/cassandra/config/CFMetaData;)Lorg/apache/cassandra/cql3/statements/IndexTarget;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // org.apache.cassandra.cql3.statements.IndexTarget$Raw rawTarget
         5: .line 209
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 212
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.indexName:Ljava/lang/String;
            astore 5 /* acceptedName */
        start local 5 // java.lang.String acceptedName
         7: .line 213
            aload 5 /* acceptedName */
            invokestatic com.google.common.base.Strings.isNullOrEmpty:(Ljava/lang/String;)Z
            ifeq 13
         8: .line 215
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.keyspace:()Ljava/lang/String;
         9: .line 216
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.columnFamily:()Ljava/lang/String;
        10: .line 217
            aload 4 /* targets */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 11
            aload 4 /* targets */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.cassandra.cql3.statements.IndexTarget
            getfield org.apache.cassandra.cql3.statements.IndexTarget.column:Lorg/apache/cassandra/cql3/ColumnIdentifier;
            invokevirtual org.apache.cassandra.cql3.ColumnIdentifier.toString:()Ljava/lang/String;
            goto 12
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.QueryState int org.apache.cassandra.config.CFMetaData java.util.List java.lang.String
      StackMap stack: java.lang.String java.lang.String
        11: aconst_null
        12: .line 215
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.QueryState int org.apache.cassandra.config.CFMetaData java.util.List java.lang.String
      StackMap stack: java.lang.String java.lang.String java.lang.String
            invokestatic org.apache.cassandra.schema.Indexes.getAvailableIndexName:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* acceptedName */
        13: .line 220
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.keyspace:()Ljava/lang/String;
            invokevirtual org.apache.cassandra.config.Schema.getKSMetaData:(Ljava/lang/String;)Lorg/apache/cassandra/schema/KeyspaceMetadata;
            aconst_null
            invokevirtual org.apache.cassandra.schema.KeyspaceMetadata.existingIndexNames:(Ljava/lang/String;)Ljava/util/Set;
            aload 5 /* acceptedName */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 17
        14: .line 222
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.ifNotExists:Z
            ifeq 16
        15: .line 223
            aconst_null
            areturn
        16: .line 225
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Index %s already exists"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* acceptedName */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 230
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.properties:Lorg/apache/cassandra/cql3/statements/IndexPropDefs;
            getfield org.apache.cassandra.cql3.statements.IndexPropDefs.isCustom:Z
            ifeq 28
        18: .line 232
            getstatic org.apache.cassandra.schema.IndexMetadata$Kind.CUSTOM:Lorg/apache/cassandra/schema/IndexMetadata$Kind;
            astore 6 /* kind */
        start local 6 // org.apache.cassandra.schema.IndexMetadata$Kind kind
        19: .line 233
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.properties:Lorg/apache/cassandra/cql3/statements/IndexPropDefs;
            invokevirtual org.apache.cassandra.cql3.statements.IndexPropDefs.getOptions:()Ljava/util/Map;
            astore 7 /* indexOptions */
        start local 7 // java.util.Map indexOptions
        20: .line 235
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.properties:Lorg/apache/cassandra/cql3/statements/IndexPropDefs;
            getfield org.apache.cassandra.cql3.statements.IndexPropDefs.customClass:Ljava/lang/String;
            ldc Lorg/apache/cassandra/index/sasi/SASIIndex;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 32
        21: .line 237
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getEnableSASIIndexes:()Z
            ifne 23
        22: .line 238
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "SASI indexes are disabled. Enable in cassandra.yaml to use."
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 240
      StackMap locals: org.apache.cassandra.schema.IndexMetadata$Kind java.util.Map
      StackMap stack:
            getstatic org.apache.cassandra.cql3.statements.CreateIndexStatement.logger:Lorg/slf4j/Logger;
            ldc "Creating SASI index {} for {}.{}. {}"
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
        24: .line 241
            aload 5 /* acceptedName */
            aastore
            dup
            iconst_1
            aload 3 /* cfm */
            getfield org.apache.cassandra.config.CFMetaData.ksName:Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 3 /* cfm */
            getfield org.apache.cassandra.config.CFMetaData.cfName:Ljava/lang/String;
            aastore
            dup
            iconst_3
            ldc "SASI indexes are experimental and are not recommended for production use."
            aastore
        25: .line 240
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V
        26: .line 243
            getstatic org.apache.cassandra.service.ClientWarn.instance:Lorg/apache/cassandra/service/ClientWarn;
            ldc "SASI indexes are experimental and are not recommended for production use."
            invokevirtual org.apache.cassandra.service.ClientWarn.warn:(Ljava/lang/String;)V
        27: .line 245
            goto 32
        end local 7 // java.util.Map indexOptions
        end local 6 // org.apache.cassandra.schema.IndexMetadata$Kind kind
        28: .line 248
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            astore 7 /* indexOptions */
        start local 7 // java.util.Map indexOptions
        29: .line 249
            aload 3 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.isCompound:()Z
            ifeq 30
            getstatic org.apache.cassandra.schema.IndexMetadata$Kind.COMPOSITES:Lorg/apache/cassandra/schema/IndexMetadata$Kind;
            goto 31
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.QueryState int org.apache.cassandra.config.CFMetaData java.util.List java.lang.String top java.util.Map
      StackMap stack:
        30: getstatic org.apache.cassandra.schema.IndexMetadata$Kind.KEYS:Lorg/apache/cassandra/schema/IndexMetadata$Kind;
      StackMap locals:
      StackMap stack: org.apache.cassandra.schema.IndexMetadata$Kind
        31: astore 6 /* kind */
        start local 6 // org.apache.cassandra.schema.IndexMetadata$Kind kind
        32: .line 252
      StackMap locals: org.apache.cassandra.cql3.statements.CreateIndexStatement org.apache.cassandra.service.QueryState int org.apache.cassandra.config.CFMetaData java.util.List java.lang.String org.apache.cassandra.schema.IndexMetadata$Kind java.util.Map
      StackMap stack:
            aload 3 /* cfm */
            aload 4 /* targets */
            aload 5 /* acceptedName */
            aload 6 /* kind */
            aload 7 /* indexOptions */
            invokestatic org.apache.cassandra.schema.IndexMetadata.fromIndexTargets:(Lorg/apache/cassandra/config/CFMetaData;Ljava/util/List;Ljava/lang/String;Lorg/apache/cassandra/schema/IndexMetadata$Kind;Ljava/util/Map;)Lorg/apache/cassandra/schema/IndexMetadata;
            astore 8 /* index */
        start local 8 // org.apache.cassandra.schema.IndexMetadata index
        33: .line 255
            aload 3 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.getIndexes:()Lorg/apache/cassandra/schema/Indexes;
            aload 8 /* index */
            invokedynamic apply(Lorg/apache/cassandra/schema/IndexMetadata;)Lcom/google/common/base/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  org/apache/cassandra/cql3/statements/CreateIndexStatement.lambda$0(Lorg/apache/cassandra/schema/IndexMetadata;Lorg/apache/cassandra/schema/IndexMetadata;)Z (6)
                  (Lorg/apache/cassandra/schema/IndexMetadata;)Z
            invokestatic com.google.common.collect.Iterables.tryFind:(Ljava/lang/Iterable;Lcom/google/common/base/Predicate;)Lcom/google/common/base/Optional;
            astore 9 /* existingIndex */
        start local 9 // com.google.common.base.Optional existingIndex
        34: .line 256
            aload 9 /* existingIndex */
            invokevirtual com.google.common.base.Optional.isPresent:()Z
            ifeq 41
        35: .line 258
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.ifNotExists:Z
            ifeq 37
        36: .line 259
            aconst_null
            areturn
        37: .line 261
      StackMap locals: org.apache.cassandra.schema.IndexMetadata com.google.common.base.Optional
      StackMap stack:
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Index %s is a duplicate of existing index %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        38: .line 262
            aload 8 /* index */
            getfield org.apache.cassandra.schema.IndexMetadata.name:Ljava/lang/String;
            aastore
            dup
            iconst_1
        39: .line 263
            aload 9 /* existingIndex */
            invokevirtual com.google.common.base.Optional.get:()Ljava/lang/Object;
            checkcast org.apache.cassandra.schema.IndexMetadata
            getfield org.apache.cassandra.schema.IndexMetadata.name:Ljava/lang/String;
            aastore
        40: .line 261
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
        41: .line 266
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.cql3.statements.CreateIndexStatement.logger:Lorg/slf4j/Logger;
            ldc "Updating index definition for {}"
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.CreateIndexStatement.indexName:Ljava/lang/String;
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;)V
        42: .line 267
            aload 3 /* cfm */
            aload 3 /* cfm */
            invokevirtual org.apache.cassandra.config.CFMetaData.getIndexes:()Lorg/apache/cassandra/schema/Indexes;
            aload 8 /* index */
            invokevirtual org.apache.cassandra.schema.Indexes.with:(Lorg/apache/cassandra/schema/IndexMetadata;)Lorg/apache/cassandra/schema/Indexes;
            invokevirtual org.apache.cassandra.config.CFMetaData.indexes:(Lorg/apache/cassandra/schema/Indexes;)Lorg/apache/cassandra/config/CFMetaData;
            pop
        43: .line 269
            aload 3 /* cfm */
            iload 2 /* isLocalOnly */
            invokestatic org.apache.cassandra.service.MigrationManager.announceColumnFamilyUpdate:(Lorg/apache/cassandra/config/CFMetaData;Z)V
        44: .line 272
            new org.apache.cassandra.transport.Event$SchemaChange
            dup
            getstatic org.apache.cassandra.transport.Event$SchemaChange$Change.UPDATED:Lorg/apache/cassandra/transport/Event$SchemaChange$Change;
            getstatic org.apache.cassandra.transport.Event$SchemaChange$Target.TABLE:Lorg/apache/cassandra/transport/Event$SchemaChange$Target;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.keyspace:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.CreateIndexStatement.columnFamily:()Ljava/lang/String;
            invokespecial org.apache.cassandra.transport.Event$SchemaChange.<init>:(Lorg/apache/cassandra/transport/Event$SchemaChange$Change;Lorg/apache/cassandra/transport/Event$SchemaChange$Target;Ljava/lang/String;Ljava/lang/String;)V
            areturn
        end local 9 // com.google.common.base.Optional existingIndex
        end local 8 // org.apache.cassandra.schema.IndexMetadata index
        end local 7 // java.util.Map indexOptions
        end local 6 // org.apache.cassandra.schema.IndexMetadata$Kind kind
        end local 5 // java.lang.String acceptedName
        end local 4 // java.util.List targets
        end local 3 // org.apache.cassandra.config.CFMetaData cfm
        end local 2 // boolean isLocalOnly
        end local 1 // org.apache.cassandra.service.QueryState queryState
        end local 0 // org.apache.cassandra.cql3.statements.CreateIndexStatement this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   45     0           this  Lorg/apache/cassandra/cql3/statements/CreateIndexStatement;
            0   45     1     queryState  Lorg/apache/cassandra/service/QueryState;
            0   45     2    isLocalOnly  Z
            1   45     3            cfm  Lorg/apache/cassandra/config/CFMetaData;
            2   45     4        targets  Ljava/util/List<Lorg/apache/cassandra/cql3/statements/IndexTarget;>;
            4    5     5      rawTarget  Lorg/apache/cassandra/cql3/statements/IndexTarget$Raw;
            7   45     5   acceptedName  Ljava/lang/String;
           19   28     6           kind  Lorg/apache/cassandra/schema/IndexMetadata$Kind;
           32   45     6           kind  Lorg/apache/cassandra/schema/IndexMetadata$Kind;
           20   28     7   indexOptions  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
           29   45     7   indexOptions  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
           33   45     8          index  Lorg/apache/cassandra/schema/IndexMetadata;
           34   45     9  existingIndex  Lcom/google/common/base/Optional<Lorg/apache/cassandra/schema/IndexMetadata;>;
    Exceptions:
      throws org.apache.cassandra.exceptions.RequestValidationException
    MethodParameters:
             Name  Flags
      queryState   
      isLocalOnly  

  private static boolean lambda$0(org.apache.cassandra.schema.IndexMetadata, org.apache.cassandra.schema.IndexMetadata);
    descriptor: (Lorg/apache/cassandra/schema/IndexMetadata;Lorg/apache/cassandra/schema/IndexMetadata;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // org.apache.cassandra.schema.IndexMetadata existing
         0: .line 255
            aload 1 /* existing */
            aload 0
            invokevirtual org.apache.cassandra.schema.IndexMetadata.equalsWithoutName:(Lorg/apache/cassandra/schema/IndexMetadata;)Z
            ireturn
        end local 1 // org.apache.cassandra.schema.IndexMetadata existing
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     1  existing  Lorg/apache/cassandra/schema/IndexMetadata;
}
SourceFile: "CreateIndexStatement.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final Kind = org.apache.cassandra.config.ColumnDefinition$Kind of org.apache.cassandra.config.ColumnDefinition
  public Raw = org.apache.cassandra.cql3.statements.IndexTarget$Raw of org.apache.cassandra.cql3.statements.IndexTarget
  public final Type = org.apache.cassandra.cql3.statements.IndexTarget$Type of org.apache.cassandra.cql3.statements.IndexTarget
  public final Kind = org.apache.cassandra.schema.IndexMetadata$Kind of org.apache.cassandra.schema.IndexMetadata
  public SchemaChange = org.apache.cassandra.transport.Event$SchemaChange of org.apache.cassandra.transport.Event
  public final Change = org.apache.cassandra.transport.Event$SchemaChange$Change of org.apache.cassandra.transport.Event$SchemaChange
  public final Target = org.apache.cassandra.transport.Event$SchemaChange$Target of org.apache.cassandra.transport.Event$SchemaChange