public class org.apache.cassandra.service.ClientState
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.service.ClientState
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final org.apache.cassandra.utils.CassandraVersion DEFAULT_CQL_VERSION;
    descriptor: Lorg/apache/cassandra/utils/CassandraVersion;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final java.util.Set<org.apache.cassandra.auth.IResource> READABLE_SYSTEM_RESOURCES;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Lorg/apache/cassandra/auth/IResource;>;

  private static final java.util.Set<org.apache.cassandra.auth.IResource> PROTECTED_AUTH_RESOURCES;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Lorg/apache/cassandra/auth/IResource;>;

  private static final java.util.Set<org.apache.cassandra.auth.IResource> DROPPABLE_SYSTEM_AUTH_TABLES;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Lorg/apache/cassandra/auth/IResource;>;

  private volatile org.apache.cassandra.auth.AuthenticatedUser user;
    descriptor: Lorg/apache/cassandra/auth/AuthenticatedUser;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile java.lang.String keyspace;
    descriptor: Ljava/lang/String;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean noCompactMode;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final org.apache.cassandra.cql3.QueryHandler cqlQueryHandler;
    descriptor: Lorg/apache/cassandra/cql3/QueryHandler;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public final boolean isInternal;
    descriptor: Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  private final java.net.InetSocketAddress remoteAddress;
    descriptor: Ljava/net/InetSocketAddress;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final java.util.concurrent.atomic.AtomicLong lastTimestampMicros;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=3, args_size=0
         0: .line 54
            ldc Lorg/apache/cassandra/service/ClientState;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.service.ClientState.logger:Lorg/slf4j/Logger;
         1: .line 55
            getstatic org.apache.cassandra.cql3.QueryProcessor.CQL_VERSION:Lorg/apache/cassandra/utils/CassandraVersion;
            putstatic org.apache.cassandra.service.ClientState.DEFAULT_CQL_VERSION:Lorg/apache/cassandra/utils/CassandraVersion;
         2: .line 57
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.apache.cassandra.service.ClientState.READABLE_SYSTEM_RESOURCES:Ljava/util/Set;
         3: .line 58
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.apache.cassandra.service.ClientState.PROTECTED_AUTH_RESOURCES:Ljava/util/Set;
         4: .line 59
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.apache.cassandra.service.ClientState.DROPPABLE_SYSTEM_AUTH_TABLES:Ljava/util/Set;
         5: .line 64
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "local"
            aastore
            dup
            iconst_1
            ldc "peers"
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 1
            goto 8
      StackMap locals: top java.util.Iterator
      StackMap stack:
         6: aload 1
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 0 /* cf */
        start local 0 // java.lang.String cf
         7: .line 65
            getstatic org.apache.cassandra.service.ClientState.READABLE_SYSTEM_RESOURCES:Ljava/util/Set;
            ldc "system"
            aload 0 /* cf */
            invokestatic org.apache.cassandra.auth.DataResource.table:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/auth/DataResource;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 0 // java.lang.String cf
         8: .line 64
      StackMap locals:
      StackMap stack:
            aload 1
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
         9: .line 67
            getstatic org.apache.cassandra.schema.SchemaKeyspace.ALL:Lcom/google/common/collect/ImmutableList;
            invokedynamic accept()Ljava/util/function/Consumer;
              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;)V
                  org/apache/cassandra/service/ClientState.lambda$0(Ljava/lang/String;)V (6)
                  (Ljava/lang/String;)V
            invokevirtual com.google.common.collect.ImmutableList.forEach:(Ljava/util/function/Consumer;)V
        10: .line 70
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.isDaemonInitialized:()Z
            ifeq 14
        11: .line 72
            getstatic org.apache.cassandra.service.ClientState.PROTECTED_AUTH_RESOURCES:Ljava/util/Set;
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getAuthenticator:()Lorg/apache/cassandra/auth/IAuthenticator;
            invokeinterface org.apache.cassandra.auth.IAuthenticator.protectedResources:()Ljava/util/Set;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        12: .line 73
            getstatic org.apache.cassandra.service.ClientState.PROTECTED_AUTH_RESOURCES:Ljava/util/Set;
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getAuthorizer:()Lorg/apache/cassandra/auth/IAuthorizer;
            invokeinterface org.apache.cassandra.auth.IAuthorizer.protectedResources:()Ljava/util/Set;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        13: .line 74
            getstatic org.apache.cassandra.service.ClientState.PROTECTED_AUTH_RESOURCES:Ljava/util/Set;
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getRoleManager:()Lorg/apache/cassandra/auth/IRoleManager;
            invokeinterface org.apache.cassandra.auth.IRoleManager.protectedResources:()Ljava/util/Set;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        14: .line 77
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.service.ClientState.DROPPABLE_SYSTEM_AUTH_TABLES:Ljava/util/Set;
            ldc "system_auth"
            ldc "credentials"
            invokestatic org.apache.cassandra.auth.DataResource.table:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/auth/DataResource;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        15: .line 78
            getstatic org.apache.cassandra.service.ClientState.DROPPABLE_SYSTEM_AUTH_TABLES:Ljava/util/Set;
            ldc "system_auth"
            ldc "users"
            invokestatic org.apache.cassandra.auth.DataResource.table:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/auth/DataResource;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        16: .line 79
            getstatic org.apache.cassandra.service.ClientState.DROPPABLE_SYSTEM_AUTH_TABLES:Ljava/util/Set;
            ldc "system_auth"
            ldc "permissions"
            invokestatic org.apache.cassandra.auth.DataResource.table:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/auth/DataResource;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        17: .line 95
            getstatic org.apache.cassandra.cql3.QueryProcessor.instance:Lorg/apache/cassandra/cql3/QueryProcessor;
            astore 0 /* handler */
        start local 0 // org.apache.cassandra.cql3.QueryHandler handler
        18: .line 96
            ldc "cassandra.custom_query_handler_class"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* customHandlerClass */
        start local 1 // java.lang.String customHandlerClass
        19: .line 97
            aload 1 /* customHandlerClass */
            ifnull 26
        20: .line 101
            aload 1 /* customHandlerClass */
            ldc "QueryHandler"
            invokestatic org.apache.cassandra.utils.FBUtilities.construct:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            checkcast org.apache.cassandra.cql3.QueryHandler
            astore 0 /* handler */
        21: .line 102
            getstatic org.apache.cassandra.service.ClientState.logger:Lorg/slf4j/Logger;
            ldc "Using {} as query handler for native protocol queries (as requested with -Dcassandra.custom_query_handler_class)"
            aload 1 /* customHandlerClass */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
        22: .line 103
            goto 26
        23: .line 104
      StackMap locals: org.apache.cassandra.cql3.QueryHandler java.lang.String
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
        24: .line 106
            aload 2 /* e */
            invokestatic org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable:(Ljava/lang/Throwable;)V
        25: .line 107
            getstatic org.apache.cassandra.service.ClientState.logger:Lorg/slf4j/Logger;
            ldc "Cannot use class {} as query handler ({}), ignoring by defaulting on normal query handling"
            aload 1 /* customHandlerClass */
            aload 2 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 2 // java.lang.Exception e
        26: .line 110
      StackMap locals:
      StackMap stack:
            aload 0 /* handler */
            putstatic org.apache.cassandra.service.ClientState.cqlQueryHandler:Lorg/apache/cassandra/cql3/QueryHandler;
        end local 1 // java.lang.String customHandlerClass
        end local 0 // org.apache.cassandra.cql3.QueryHandler handler
        27: .line 124
            new java.util.concurrent.atomic.AtomicLong
            dup
            lconst_0
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
            putstatic org.apache.cassandra.service.ClientState.lastTimestampMicros:Ljava/util/concurrent/atomic/AtomicLong;
            return
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            7    8     0                  cf  Ljava/lang/String;
           18   27     0             handler  Lorg/apache/cassandra/cql3/QueryHandler;
           19   27     1  customHandlerClass  Ljava/lang/String;
           24   26     2                   e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          20    22      23  Class java.lang.Exception

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 129
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 131
            aload 0 /* this */
            iconst_1
            putfield org.apache.cassandra.service.ClientState.isInternal:Z
         2: .line 132
            aload 0 /* this */
            aconst_null
            putfield org.apache.cassandra.service.ClientState.remoteAddress:Ljava/net/InetSocketAddress;
         3: .line 133
            return
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/service/ClientState;

  protected void <init>(java.net.InetSocketAddress);
    descriptor: (Ljava/net/InetSocketAddress;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // java.net.InetSocketAddress remoteAddress
         0: .line 135
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 137
            aload 0 /* this */
            iconst_0
            putfield org.apache.cassandra.service.ClientState.isInternal:Z
         2: .line 138
            aload 0 /* this */
            aload 1 /* remoteAddress */
            putfield org.apache.cassandra.service.ClientState.remoteAddress:Ljava/net/InetSocketAddress;
         3: .line 139
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getAuthenticator:()Lorg/apache/cassandra/auth/IAuthenticator;
            invokeinterface org.apache.cassandra.auth.IAuthenticator.requireAuthentication:()Z
            ifne 5
         4: .line 140
            aload 0 /* this */
            getstatic org.apache.cassandra.auth.AuthenticatedUser.ANONYMOUS_USER:Lorg/apache/cassandra/auth/AuthenticatedUser;
            putfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
         5: .line 141
      StackMap locals: org.apache.cassandra.service.ClientState java.net.InetSocketAddress
      StackMap stack:
            return
        end local 1 // java.net.InetSocketAddress remoteAddress
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lorg/apache/cassandra/service/ClientState;
            0    6     1  remoteAddress  Ljava/net/InetSocketAddress;
    MethodParameters:
               Name  Flags
      remoteAddress  

  public static org.apache.cassandra.service.ClientState forInternalCalls();
    descriptor: ()Lorg/apache/cassandra/service/ClientState;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 148
            new org.apache.cassandra.service.ClientState
            dup
            invokespecial org.apache.cassandra.service.ClientState.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static org.apache.cassandra.service.ClientState forExternalCalls(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Lorg/apache/cassandra/service/ClientState;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.net.SocketAddress remoteAddress
         0: .line 156
            new org.apache.cassandra.service.ClientState
            dup
            aload 0 /* remoteAddress */
            checkcast java.net.InetSocketAddress
            invokespecial org.apache.cassandra.service.ClientState.<init>:(Ljava/net/InetSocketAddress;)V
            areturn
        end local 0 // java.net.SocketAddress remoteAddress
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0  remoteAddress  Ljava/net/SocketAddress;
    MethodParameters:
               Name  Flags
      remoteAddress  

  public long getTimestamp();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 167
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            ldc 1000
            lmul
            lstore 1 /* current */
        start local 1 // long current
         1: .line 168
            getstatic org.apache.cassandra.service.ClientState.lastTimestampMicros:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 3 /* last */
        start local 3 // long last
         2: .line 169
            lload 3 /* last */
            lload 1 /* current */
            lcmp
            iflt 3
            lload 3 /* last */
            lconst_1
            ladd
            goto 4
      StackMap locals: long long
      StackMap stack:
         3: lload 1 /* current */
      StackMap locals:
      StackMap stack: long
         4: lstore 5 /* tstamp */
        start local 5 // long tstamp
         5: .line 170
            getstatic org.apache.cassandra.service.ClientState.lastTimestampMicros:Ljava/util/concurrent/atomic/AtomicLong;
            lload 3 /* last */
            lload 5 /* tstamp */
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 0
         6: .line 171
            lload 5 /* tstamp */
            lreturn
        end local 5 // long tstamp
        end local 3 // long last
        end local 1 // long current
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/apache/cassandra/service/ClientState;
            1    7     1  current  J
            2    7     3     last  J
            5    7     5   tstamp  J

  public long getTimestampForPaxos(long);
    descriptor: (J)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // long minTimestampToUse
         0: .line 221
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            ldc 1000
            lmul
            lload 1 /* minTimestampToUse */
            invokestatic java.lang.Math.max:(JJ)J
            lstore 3 /* current */
        start local 3 // long current
         1: .line 222
            getstatic org.apache.cassandra.service.ClientState.lastTimestampMicros:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 5 /* last */
        start local 5 // long last
         2: .line 223
            lload 5 /* last */
            lload 3 /* current */
            lcmp
            iflt 3
            lload 5 /* last */
            lconst_1
            ladd
            goto 4
      StackMap locals: long long
      StackMap stack:
         3: lload 3 /* current */
      StackMap locals:
      StackMap stack: long
         4: lstore 7 /* tstamp */
        start local 7 // long tstamp
         5: .line 228
            lload 7 /* tstamp */
            lload 1 /* minTimestampToUse */
            lcmp
            ifeq 6
            getstatic org.apache.cassandra.service.ClientState.lastTimestampMicros:Ljava/util/concurrent/atomic/AtomicLong;
            lload 5 /* last */
            lload 7 /* tstamp */
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 0
         6: .line 229
      StackMap locals: long
      StackMap stack:
            lload 7 /* tstamp */
            lreturn
        end local 7 // long tstamp
        end local 5 // long last
        end local 3 // long current
        end local 1 // long minTimestampToUse
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0               this  Lorg/apache/cassandra/service/ClientState;
            0    7     1  minTimestampToUse  J
            1    7     3            current  J
            2    7     5               last  J
            5    7     7             tstamp  J
    MethodParameters:
                   Name  Flags
      minTimestampToUse  

  public static org.apache.cassandra.cql3.QueryHandler getCQLQueryHandler();
    descriptor: ()Lorg/apache/cassandra/cql3/QueryHandler;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 235
            getstatic org.apache.cassandra.service.ClientState.cqlQueryHandler:Lorg/apache/cassandra/cql3/QueryHandler;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.net.InetSocketAddress getRemoteAddress();
    descriptor: ()Ljava/net/InetSocketAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 240
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.remoteAddress:Ljava/net/InetSocketAddress;
            areturn
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/service/ClientState;

  public java.lang.String getRawKeyspace();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 245
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.keyspace:Ljava/lang/String;
            areturn
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/service/ClientState;

  public java.lang.String getKeyspace();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 250
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.keyspace:Ljava/lang/String;
            ifnonnull 2
         1: .line 251
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "No keyspace has been specified. USE a keyspace, or explicitly specify keyspace.tablename"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 252
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.keyspace:Ljava/lang/String;
            areturn
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/service/ClientState;
    Exceptions:
      throws org.apache.cassandra.exceptions.InvalidRequestException

  public void setKeyspace(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // java.lang.String ks
         0: .line 259
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
            ifnull 2
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 1 /* ks */
            invokevirtual org.apache.cassandra.config.Schema.getKSMetaData:(Ljava/lang/String;)Lorg/apache/cassandra/schema/KeyspaceMetadata;
            ifnonnull 2
         1: .line 260
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Keyspace '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* ks */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' does not exist"
            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
         2: .line 261
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ks */
            putfield org.apache.cassandra.service.ClientState.keyspace:Ljava/lang/String;
         3: .line 262
            return
        end local 1 // java.lang.String ks
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/service/ClientState;
            0    4     1    ks  Ljava/lang/String;
    Exceptions:
      throws org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
      Name  Flags
      ks    

  public void setNoCompactMode();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 266
            aload 0 /* this */
            iconst_1
            putfield org.apache.cassandra.service.ClientState.noCompactMode:Z
         1: .line 267
            return
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/service/ClientState;

  public boolean isNoCompactMode();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 271
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.noCompactMode:Z
            ireturn
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/service/ClientState;

  public void login(org.apache.cassandra.auth.AuthenticatedUser);
    descriptor: (Lorg/apache/cassandra/auth/AuthenticatedUser;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // org.apache.cassandra.auth.AuthenticatedUser user
         0: .line 282
            aload 1 /* user */
            invokevirtual org.apache.cassandra.auth.AuthenticatedUser.isAnonymous:()Z
            ifne 1
            aload 0 /* this */
            aload 1 /* user */
            invokevirtual org.apache.cassandra.service.ClientState.canLogin:(Lorg/apache/cassandra/auth/AuthenticatedUser;)Z
            ifeq 2
         1: .line 283
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* user */
            putfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
            goto 3
         2: .line 285
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.exceptions.AuthenticationException
            dup
            ldc "%s is not permitted to log in"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* user */
            invokevirtual org.apache.cassandra.auth.AuthenticatedUser.getName:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.AuthenticationException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 286
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.apache.cassandra.auth.AuthenticatedUser user
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/service/ClientState;
            0    4     1  user  Lorg/apache/cassandra/auth/AuthenticatedUser;
    Exceptions:
      throws org.apache.cassandra.exceptions.AuthenticationException
    MethodParameters:
      Name  Flags
      user  

  private boolean canLogin(org.apache.cassandra.auth.AuthenticatedUser);
    descriptor: (Lorg/apache/cassandra/auth/AuthenticatedUser;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // org.apache.cassandra.auth.AuthenticatedUser user
         0: .line 292
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getRoleManager:()Lorg/apache/cassandra/auth/IRoleManager;
            aload 1 /* user */
            invokevirtual org.apache.cassandra.auth.AuthenticatedUser.getPrimaryRole:()Lorg/apache/cassandra/auth/RoleResource;
            invokeinterface org.apache.cassandra.auth.IRoleManager.canLogin:(Lorg/apache/cassandra/auth/RoleResource;)Z
         1: ireturn
         2: .line 293
      StackMap locals:
      StackMap stack: org.apache.cassandra.exceptions.RequestExecutionException
            astore 2 /* e */
        start local 2 // org.apache.cassandra.exceptions.RequestExecutionException e
         3: .line 294
            new org.apache.cassandra.exceptions.AuthenticationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to perform authentication: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual org.apache.cassandra.exceptions.RequestExecutionException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.apache.cassandra.exceptions.AuthenticationException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // org.apache.cassandra.exceptions.RequestExecutionException e
        end local 1 // org.apache.cassandra.auth.AuthenticatedUser user
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/service/ClientState;
            0    4     1  user  Lorg/apache/cassandra/auth/AuthenticatedUser;
            3    4     2     e  Lorg/apache/cassandra/exceptions/RequestExecutionException;
      Exception table:
        from    to  target  type
           0     1       2  Class org.apache.cassandra.exceptions.RequestExecutionException
    MethodParameters:
      Name  Flags
      user  

  public void hasAllKeyspacesAccess(org.apache.cassandra.auth.Permission);
    descriptor: (Lorg/apache/cassandra/auth/Permission;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // org.apache.cassandra.auth.Permission perm
         0: .line 300
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.isInternal:Z
            ifeq 2
         1: .line 301
            return
         2: .line 302
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.cassandra.service.ClientState.validateLogin:()V
         3: .line 303
            aload 0 /* this */
            aload 1 /* perm */
            invokestatic org.apache.cassandra.auth.DataResource.root:()Lorg/apache/cassandra/auth/DataResource;
            invokevirtual org.apache.cassandra.service.ClientState.ensureHasPermission:(Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/IResource;)V
         4: .line 304
            return
        end local 1 // org.apache.cassandra.auth.Permission perm
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/cassandra/service/ClientState;
            0    5     1  perm  Lorg/apache/cassandra/auth/Permission;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException
    MethodParameters:
      Name  Flags
      perm  

  public void hasKeyspaceAccess(java.lang.String, org.apache.cassandra.auth.Permission);
    descriptor: (Ljava/lang/String;Lorg/apache/cassandra/auth/Permission;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // java.lang.String keyspace
        start local 2 // org.apache.cassandra.auth.Permission perm
         0: .line 308
            aload 0 /* this */
            aload 1 /* keyspace */
            aload 2 /* perm */
            aload 1 /* keyspace */
            invokestatic org.apache.cassandra.auth.DataResource.keyspace:(Ljava/lang/String;)Lorg/apache/cassandra/auth/DataResource;
            invokevirtual org.apache.cassandra.service.ClientState.hasAccess:(Ljava/lang/String;Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/DataResource;)V
         1: .line 309
            return
        end local 2 // org.apache.cassandra.auth.Permission perm
        end local 1 // java.lang.String keyspace
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/apache/cassandra/service/ClientState;
            0    2     1  keyspace  Ljava/lang/String;
            0    2     2      perm  Lorg/apache/cassandra/auth/Permission;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException, org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
          Name  Flags
      keyspace  
      perm      

  public void hasColumnFamilyAccess(java.lang.String, java.lang.String, org.apache.cassandra.auth.Permission);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/apache/cassandra/auth/Permission;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // java.lang.String keyspace
        start local 2 // java.lang.String columnFamily
        start local 3 // org.apache.cassandra.auth.Permission perm
         0: .line 314
            aload 1 /* keyspace */
            aload 2 /* columnFamily */
            invokestatic org.apache.cassandra.thrift.ThriftValidation.validateColumnFamily:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/config/CFMetaData;
            pop
         1: .line 315
            aload 0 /* this */
            aload 1 /* keyspace */
            aload 3 /* perm */
            aload 1 /* keyspace */
            aload 2 /* columnFamily */
            invokestatic org.apache.cassandra.auth.DataResource.table:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/auth/DataResource;
            invokevirtual org.apache.cassandra.service.ClientState.hasAccess:(Ljava/lang/String;Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/DataResource;)V
         2: .line 316
            return
        end local 3 // org.apache.cassandra.auth.Permission perm
        end local 2 // java.lang.String columnFamily
        end local 1 // java.lang.String keyspace
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/apache/cassandra/service/ClientState;
            0    3     1      keyspace  Ljava/lang/String;
            0    3     2  columnFamily  Ljava/lang/String;
            0    3     3          perm  Lorg/apache/cassandra/auth/Permission;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException, org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
              Name  Flags
      keyspace      
      columnFamily  
      perm          

  public void hasColumnFamilyAccess(org.apache.cassandra.config.CFMetaData, org.apache.cassandra.auth.Permission);
    descriptor: (Lorg/apache/cassandra/config/CFMetaData;Lorg/apache/cassandra/auth/Permission;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // org.apache.cassandra.config.CFMetaData cfm
        start local 2 // org.apache.cassandra.auth.Permission perm
         0: .line 321
            aload 0 /* this */
            aload 1 /* cfm */
            getfield org.apache.cassandra.config.CFMetaData.ksName:Ljava/lang/String;
            aload 2 /* perm */
            aload 1 /* cfm */
            getfield org.apache.cassandra.config.CFMetaData.resource:Lorg/apache/cassandra/auth/DataResource;
            invokevirtual org.apache.cassandra.service.ClientState.hasAccess:(Ljava/lang/String;Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/DataResource;)V
         1: .line 322
            return
        end local 2 // org.apache.cassandra.auth.Permission perm
        end local 1 // org.apache.cassandra.config.CFMetaData cfm
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/service/ClientState;
            0    2     1   cfm  Lorg/apache/cassandra/config/CFMetaData;
            0    2     2  perm  Lorg/apache/cassandra/auth/Permission;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException, org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
      Name  Flags
      cfm   
      perm  

  private void hasAccess(java.lang.String, org.apache.cassandra.auth.Permission, org.apache.cassandra.auth.DataResource);
    descriptor: (Ljava/lang/String;Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/DataResource;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // java.lang.String keyspace
        start local 2 // org.apache.cassandra.auth.Permission perm
        start local 3 // org.apache.cassandra.auth.DataResource resource
         0: .line 327
            aload 1 /* keyspace */
            invokestatic org.apache.cassandra.service.ClientState.validateKeyspace:(Ljava/lang/String;)V
         1: .line 329
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.isInternal:Z
            ifeq 3
         2: .line 330
            return
         3: .line 332
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.cassandra.service.ClientState.validateLogin:()V
         4: .line 334
            aload 0 /* this */
            aload 1 /* keyspace */
            aload 3 /* resource */
            aload 2 /* perm */
            invokevirtual org.apache.cassandra.service.ClientState.preventSystemKSSchemaModification:(Ljava/lang/String;Lorg/apache/cassandra/auth/DataResource;Lorg/apache/cassandra/auth/Permission;)V
         5: .line 336
            aload 2 /* perm */
            getstatic org.apache.cassandra.auth.Permission.SELECT:Lorg/apache/cassandra/auth/Permission;
            if_acmpne 7
            getstatic org.apache.cassandra.service.ClientState.READABLE_SYSTEM_RESOURCES:Ljava/util/Set;
            aload 3 /* resource */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 337
            return
         7: .line 339
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.service.ClientState.PROTECTED_AUTH_RESOURCES:Ljava/util/Set;
            aload 3 /* resource */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 10
         8: .line 340
            aload 2 /* perm */
            getstatic org.apache.cassandra.auth.Permission.CREATE:Lorg/apache/cassandra/auth/Permission;
            if_acmpeq 9
            aload 2 /* perm */
            getstatic org.apache.cassandra.auth.Permission.ALTER:Lorg/apache/cassandra/auth/Permission;
            if_acmpeq 9
            aload 2 /* perm */
            getstatic org.apache.cassandra.auth.Permission.DROP:Lorg/apache/cassandra/auth/Permission;
            if_acmpne 10
         9: .line 341
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.exceptions.UnauthorizedException
            dup
            ldc "%s schema is protected"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* resource */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 343
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* perm */
            aload 3 /* resource */
            invokevirtual org.apache.cassandra.service.ClientState.ensureHasPermission:(Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/IResource;)V
        11: .line 344
            return
        end local 3 // org.apache.cassandra.auth.DataResource resource
        end local 2 // org.apache.cassandra.auth.Permission perm
        end local 1 // java.lang.String keyspace
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lorg/apache/cassandra/service/ClientState;
            0   12     1  keyspace  Ljava/lang/String;
            0   12     2      perm  Lorg/apache/cassandra/auth/Permission;
            0   12     3  resource  Lorg/apache/cassandra/auth/DataResource;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException, org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
          Name  Flags
      keyspace  
      perm      
      resource  

  public void ensureHasPermission(org.apache.cassandra.auth.Permission, org.apache.cassandra.auth.IResource);
    descriptor: (Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/IResource;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // org.apache.cassandra.auth.Permission perm
        start local 2 // org.apache.cassandra.auth.IResource resource
         0: .line 348
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getAuthorizer:()Lorg/apache/cassandra/auth/IAuthorizer;
            invokeinterface org.apache.cassandra.auth.IAuthorizer.requireAuthorization:()Z
            ifne 2
         1: .line 349
            return
         2: .line 352
      StackMap locals:
      StackMap stack:
            aload 2 /* resource */
            instanceof org.apache.cassandra.auth.FunctionResource
            ifeq 5
            aload 2 /* resource */
            invokeinterface org.apache.cassandra.auth.IResource.hasParent:()Z
            ifeq 5
         3: .line 353
            aload 2 /* resource */
            checkcast org.apache.cassandra.auth.FunctionResource
            invokevirtual org.apache.cassandra.auth.FunctionResource.getKeyspace:()Ljava/lang/String;
            ldc "system"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 354
            return
         5: .line 356
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* perm */
            aload 2 /* resource */
            invokevirtual org.apache.cassandra.service.ClientState.checkPermissionOnResourceChain:(Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/IResource;)V
         6: .line 357
            return
        end local 2 // org.apache.cassandra.auth.IResource resource
        end local 1 // org.apache.cassandra.auth.Permission perm
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/apache/cassandra/service/ClientState;
            0    7     1      perm  Lorg/apache/cassandra/auth/Permission;
            0    7     2  resource  Lorg/apache/cassandra/auth/IResource;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException
    MethodParameters:
          Name  Flags
      perm      
      resource  

  public void ensureHasPermission(org.apache.cassandra.auth.Permission, org.apache.cassandra.cql3.functions.Function);
    descriptor: (Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/cql3/functions/Function;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // org.apache.cassandra.auth.Permission permission
        start local 2 // org.apache.cassandra.cql3.functions.Function function
         0: .line 364
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getAuthorizer:()Lorg/apache/cassandra/auth/IAuthorizer;
            invokeinterface org.apache.cassandra.auth.IAuthorizer.requireAuthorization:()Z
            ifne 2
         1: .line 365
            return
         2: .line 368
      StackMap locals:
      StackMap stack:
            aload 2 /* function */
            invokeinterface org.apache.cassandra.cql3.functions.Function.isNative:()Z
            ifeq 4
         3: .line 369
            return
         4: .line 371
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* permission */
            aload 2 /* function */
            invokeinterface org.apache.cassandra.cql3.functions.Function.name:()Lorg/apache/cassandra/cql3/functions/FunctionName;
            getfield org.apache.cassandra.cql3.functions.FunctionName.keyspace:Ljava/lang/String;
         5: .line 372
            aload 2 /* function */
            invokeinterface org.apache.cassandra.cql3.functions.Function.name:()Lorg/apache/cassandra/cql3/functions/FunctionName;
            getfield org.apache.cassandra.cql3.functions.FunctionName.name:Ljava/lang/String;
         6: .line 373
            aload 2 /* function */
            invokeinterface org.apache.cassandra.cql3.functions.Function.argTypes:()Ljava/util/List;
         7: .line 371
            invokestatic org.apache.cassandra.auth.FunctionResource.function:(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Lorg/apache/cassandra/auth/FunctionResource;
            invokevirtual org.apache.cassandra.service.ClientState.checkPermissionOnResourceChain:(Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/IResource;)V
         8: .line 374
            return
        end local 2 // org.apache.cassandra.cql3.functions.Function function
        end local 1 // org.apache.cassandra.auth.Permission permission
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/apache/cassandra/service/ClientState;
            0    9     1  permission  Lorg/apache/cassandra/auth/Permission;
            0    9     2    function  Lorg/apache/cassandra/cql3/functions/Function;
    MethodParameters:
            Name  Flags
      permission  
      function    

  private void checkPermissionOnResourceChain(org.apache.cassandra.auth.Permission, org.apache.cassandra.auth.IResource);
    descriptor: (Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/IResource;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // org.apache.cassandra.auth.Permission perm
        start local 2 // org.apache.cassandra.auth.IResource resource
         0: .line 378
            aload 2 /* resource */
            invokestatic org.apache.cassandra.auth.Resources.chain:(Lorg/apache/cassandra/auth/IResource;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.apache.cassandra.service.ClientState org.apache.cassandra.auth.Permission org.apache.cassandra.auth.IResource top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.auth.IResource
            astore 3 /* r */
        start local 3 // org.apache.cassandra.auth.IResource r
         2: .line 379
            aload 0 /* this */
            aload 3 /* r */
            invokevirtual org.apache.cassandra.service.ClientState.authorize:(Lorg/apache/cassandra/auth/IResource;)Ljava/util/Set;
            aload 1 /* perm */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 380
            return
        end local 3 // org.apache.cassandra.auth.IResource r
         4: .line 378
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 382
            new org.apache.cassandra.exceptions.UnauthorizedException
            dup
            ldc "User %s has no %s permission on %s or any of its parents"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         6: .line 383
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
            invokevirtual org.apache.cassandra.auth.AuthenticatedUser.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
         7: .line 384
            aload 1 /* perm */
            aastore
            dup
            iconst_2
         8: .line 385
            aload 2 /* resource */
            aastore
         9: .line 382
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // org.apache.cassandra.auth.IResource resource
        end local 1 // org.apache.cassandra.auth.Permission perm
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lorg/apache/cassandra/service/ClientState;
            0   10     1      perm  Lorg/apache/cassandra/auth/Permission;
            0   10     2  resource  Lorg/apache/cassandra/auth/IResource;
            2    4     3         r  Lorg/apache/cassandra/auth/IResource;
    MethodParameters:
          Name  Flags
      perm      
      resource  

  private void preventSystemKSSchemaModification(java.lang.String, org.apache.cassandra.auth.DataResource, org.apache.cassandra.auth.Permission);
    descriptor: (Ljava/lang/String;Lorg/apache/cassandra/auth/DataResource;Lorg/apache/cassandra/auth/Permission;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // java.lang.String keyspace
        start local 2 // org.apache.cassandra.auth.DataResource resource
        start local 3 // org.apache.cassandra.auth.Permission perm
         0: .line 391
            aload 3 /* perm */
            getstatic org.apache.cassandra.auth.Permission.ALTER:Lorg/apache/cassandra/auth/Permission;
            if_acmpeq 2
            aload 3 /* perm */
            getstatic org.apache.cassandra.auth.Permission.DROP:Lorg/apache/cassandra/auth/Permission;
            if_acmpeq 2
            aload 3 /* perm */
            getstatic org.apache.cassandra.auth.Permission.CREATE:Lorg/apache/cassandra/auth/Permission;
            if_acmpeq 2
         1: .line 392
            return
         2: .line 395
      StackMap locals:
      StackMap stack:
            aload 1 /* keyspace */
            invokestatic org.apache.cassandra.config.SchemaConstants.isLocalSystemKeyspace:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 396
            new org.apache.cassandra.exceptions.UnauthorizedException
            dup
            new java.lang.StringBuilder
            dup
            aload 1 /* keyspace */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " keyspace is not user-modifiable."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 398
      StackMap locals:
      StackMap stack:
            aload 1 /* keyspace */
            invokestatic org.apache.cassandra.config.SchemaConstants.isReplicatedSystemKeyspace:(Ljava/lang/String;)Z
            ifeq 10
         5: .line 401
            aload 3 /* perm */
            getstatic org.apache.cassandra.auth.Permission.ALTER:Lorg/apache/cassandra/auth/Permission;
            if_acmpne 7
            aload 2 /* resource */
            invokevirtual org.apache.cassandra.auth.DataResource.isKeyspaceLevel:()Z
            ifeq 7
         6: .line 402
            return
         7: .line 405
      StackMap locals:
      StackMap stack:
            aload 3 /* perm */
            getstatic org.apache.cassandra.auth.Permission.DROP:Lorg/apache/cassandra/auth/Permission;
            if_acmpne 9
            getstatic org.apache.cassandra.service.ClientState.DROPPABLE_SYSTEM_AUTH_TABLES:Ljava/util/Set;
            aload 2 /* resource */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 406
            return
         9: .line 409
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.exceptions.UnauthorizedException
            dup
            ldc "Cannot %s %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* perm */
            aastore
            dup
            iconst_1
            aload 2 /* resource */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 411
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.apache.cassandra.auth.Permission perm
        end local 2 // org.apache.cassandra.auth.DataResource resource
        end local 1 // java.lang.String keyspace
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lorg/apache/cassandra/service/ClientState;
            0   11     1  keyspace  Ljava/lang/String;
            0   11     2  resource  Lorg/apache/cassandra/auth/DataResource;
            0   11     3      perm  Lorg/apache/cassandra/auth/Permission;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException
    MethodParameters:
          Name  Flags
      keyspace  
      resource  
      perm      

  public void validateLogin();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 415
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
            ifnonnull 2
         1: .line 416
            new org.apache.cassandra.exceptions.UnauthorizedException
            dup
            ldc "You have not logged in"
            invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 417
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/service/ClientState;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException

  public void ensureNotAnonymous();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 421
            aload 0 /* this */
            invokevirtual org.apache.cassandra.service.ClientState.validateLogin:()V
         1: .line 422
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
            invokevirtual org.apache.cassandra.auth.AuthenticatedUser.isAnonymous:()Z
            ifeq 3
         2: .line 423
            new org.apache.cassandra.exceptions.UnauthorizedException
            dup
            ldc "You have to be logged in and not anonymous to perform this request"
            invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 424
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/service/ClientState;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException

  public void ensureIsSuper(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // java.lang.String message
         0: .line 428
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getAuthenticator:()Lorg/apache/cassandra/auth/IAuthenticator;
            invokeinterface org.apache.cassandra.auth.IAuthenticator.requireAuthentication:()Z
            ifeq 2
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
            ifnull 1
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
            invokevirtual org.apache.cassandra.auth.AuthenticatedUser.isSuper:()Z
            ifne 2
         1: .line 429
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.exceptions.UnauthorizedException
            dup
            aload 1 /* message */
            invokespecial org.apache.cassandra.exceptions.UnauthorizedException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 430
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String message
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/apache/cassandra/service/ClientState;
            0    3     1  message  Ljava/lang/String;
    Exceptions:
      throws org.apache.cassandra.exceptions.UnauthorizedException
    MethodParameters:
         Name  Flags
      message  

  private static void validateKeyspace(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String keyspace
         0: .line 434
            aload 0 /* keyspace */
            ifnonnull 2
         1: .line 435
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "You have not set a keyspace for this session"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 436
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String keyspace
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  keyspace  Ljava/lang/String;
    Exceptions:
      throws org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
          Name  Flags
      keyspace  

  public org.apache.cassandra.auth.AuthenticatedUser getUser();
    descriptor: ()Lorg/apache/cassandra/auth/AuthenticatedUser;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.service.ClientState this
         0: .line 440
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
            areturn
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/service/ClientState;

  public static org.apache.cassandra.utils.CassandraVersion[] getCQLSupportedVersion();
    descriptor: ()[Lorg/apache/cassandra/utils/CassandraVersion;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 445
            iconst_1
            anewarray org.apache.cassandra.utils.CassandraVersion
            dup
            iconst_0
            getstatic org.apache.cassandra.cql3.QueryProcessor.CQL_VERSION:Lorg/apache/cassandra/utils/CassandraVersion;
            aastore
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private java.util.Set<org.apache.cassandra.auth.Permission> authorize(org.apache.cassandra.auth.IResource);
    descriptor: (Lorg/apache/cassandra/auth/IResource;)Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.service.ClientState this
        start local 1 // org.apache.cassandra.auth.IResource resource
         0: .line 450
            aload 0 /* this */
            getfield org.apache.cassandra.service.ClientState.user:Lorg/apache/cassandra/auth/AuthenticatedUser;
            aload 1 /* resource */
            invokevirtual org.apache.cassandra.auth.AuthenticatedUser.getPermissions:(Lorg/apache/cassandra/auth/IResource;)Ljava/util/Set;
            areturn
        end local 1 // org.apache.cassandra.auth.IResource resource
        end local 0 // org.apache.cassandra.service.ClientState this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/cassandra/service/ClientState;
            0    1     1  resource  Lorg/apache/cassandra/auth/IResource;
    Signature: (Lorg/apache/cassandra/auth/IResource;)Ljava/util/Set<Lorg/apache/cassandra/auth/Permission;>;
    MethodParameters:
          Name  Flags
      resource  

  private static void lambda$0(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String table
         0: .line 67
            getstatic org.apache.cassandra.service.ClientState.READABLE_SYSTEM_RESOURCES:Ljava/util/Set;
            ldc "system_schema"
            aload 0 /* table */
            invokestatic org.apache.cassandra.auth.DataResource.table:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/auth/DataResource;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            return
        end local 0 // java.lang.String table
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  table  Ljava/lang/String;
}
SourceFile: "ClientState.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles