public final class org.apache.cassandra.cql3.statements.DropFunctionStatement extends org.apache.cassandra.cql3.statements.SchemaAlteringStatement
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.cassandra.cql3.statements.DropFunctionStatement
  super_class: org.apache.cassandra.cql3.statements.SchemaAlteringStatement
{
  private org.apache.cassandra.cql3.functions.FunctionName functionName;
    descriptor: Lorg/apache/cassandra/cql3/functions/FunctionName;
    flags: (0x0002) ACC_PRIVATE

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

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

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

  private java.util.List<org.apache.cassandra.db.marshal.AbstractType<?>> argTypes;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lorg/apache/cassandra/db/marshal/AbstractType<*>;>;

  public void <init>(org.apache.cassandra.cql3.functions.FunctionName, java.util.List<org.apache.cassandra.cql3.CQL3Type$Raw>, boolean, );
    descriptor: (Lorg/apache/cassandra/cql3/functions/FunctionName;Ljava/util/List;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
        start local 1 // org.apache.cassandra.cql3.functions.FunctionName functionName
        start local 2 // java.util.List argRawTypes
        start local 3 // boolean argsPresent
        start local 4 // boolean ifExists
         0: .line 54
            aload 0 /* this */
            invokespecial org.apache.cassandra.cql3.statements.SchemaAlteringStatement.<init>:()V
         1: .line 59
            aload 0 /* this */
            aload 1 /* functionName */
            putfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
         2: .line 60
            aload 0 /* this */
            aload 2 /* argRawTypes */
            putfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argRawTypes:Ljava/util/List;
         3: .line 61
            aload 0 /* this */
            iload 3 /* argsPresent */
            putfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argsPresent:Z
         4: .line 62
            aload 0 /* this */
            iload 4 /* ifExists */
            putfield org.apache.cassandra.cql3.statements.DropFunctionStatement.ifExists:Z
         5: .line 63
            return
        end local 4 // boolean ifExists
        end local 3 // boolean argsPresent
        end local 2 // java.util.List argRawTypes
        end local 1 // org.apache.cassandra.cql3.functions.FunctionName functionName
        end local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lorg/apache/cassandra/cql3/statements/DropFunctionStatement;
            0    6     1  functionName  Lorg/apache/cassandra/cql3/functions/FunctionName;
            0    6     2   argRawTypes  Ljava/util/List<Lorg/apache/cassandra/cql3/CQL3Type$Raw;>;
            0    6     3   argsPresent  Z
            0    6     4      ifExists  Z
    Signature: (Lorg/apache/cassandra/cql3/functions/FunctionName;Ljava/util/List<Lorg/apache/cassandra/cql3/CQL3Type$Raw;>;ZZ)V
    MethodParameters:
              Name  Flags
      functionName  
      argRawTypes   
      argsPresent   
      ifExists      

  public org.apache.cassandra.cql3.statements.ParsedStatement$Prepared prepare(org.apache.cassandra.service.ClientState);
    descriptor: (Lorg/apache/cassandra/service/ClientState;)Lorg/apache/cassandra/cql3/statements/ParsedStatement$Prepared;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
        start local 1 // org.apache.cassandra.service.ClientState clientState
         0: .line 68
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            getfield org.apache.cassandra.cql3.functions.FunctionName.keyspace:Ljava/lang/String;
            invokevirtual org.apache.cassandra.config.Schema.getKSMetaData:(Ljava/lang/String;)Lorg/apache/cassandra/schema/KeyspaceMetadata;
            ifnull 10
         1: .line 70
            aload 0 /* this */
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argRawTypes:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            putfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argTypes:Ljava/util/List;
         2: .line 71
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argRawTypes:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 9
      StackMap locals: org.apache.cassandra.cql3.statements.DropFunctionStatement org.apache.cassandra.service.ClientState top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.cql3.CQL3Type$Raw
            astore 2 /* rawType */
        start local 2 // org.apache.cassandra.cql3.CQL3Type$Raw rawType
         4: .line 73
            aload 2 /* rawType */
            invokevirtual org.apache.cassandra.cql3.CQL3Type$Raw.isFrozen:()Z
            ifeq 6
         5: .line 74
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "The function arguments should not be frozen; remove the frozen<> modifier"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 78
      StackMap locals: org.apache.cassandra.cql3.statements.DropFunctionStatement org.apache.cassandra.service.ClientState org.apache.cassandra.cql3.CQL3Type$Raw java.util.Iterator
      StackMap stack:
            aload 2 /* rawType */
            invokevirtual org.apache.cassandra.cql3.CQL3Type$Raw.canBeNonFrozen:()Z
            ifne 8
         7: .line 79
            aload 2 /* rawType */
            invokevirtual org.apache.cassandra.cql3.CQL3Type$Raw.freeze:()V
         8: .line 81
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argTypes:Ljava/util/List;
            aload 2 /* rawType */
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            getfield org.apache.cassandra.cql3.functions.FunctionName.keyspace:Ljava/lang/String;
            invokevirtual org.apache.cassandra.cql3.CQL3Type$Raw.prepare:(Ljava/lang/String;)Lorg/apache/cassandra/cql3/CQL3Type;
            invokeinterface org.apache.cassandra.cql3.CQL3Type.getType:()Lorg/apache/cassandra/db/marshal/AbstractType;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // org.apache.cassandra.cql3.CQL3Type$Raw rawType
         9: .line 71
      StackMap locals: org.apache.cassandra.cql3.statements.DropFunctionStatement org.apache.cassandra.service.ClientState top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        10: .line 85
      StackMap locals: org.apache.cassandra.cql3.statements.DropFunctionStatement org.apache.cassandra.service.ClientState
      StackMap stack:
            aload 0 /* this */
            aload 1 /* clientState */
            invokespecial org.apache.cassandra.cql3.statements.SchemaAlteringStatement.prepare:(Lorg/apache/cassandra/service/ClientState;)Lorg/apache/cassandra/cql3/statements/ParsedStatement$Prepared;
            areturn
        end local 1 // org.apache.cassandra.service.ClientState clientState
        end local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         this  Lorg/apache/cassandra/cql3/statements/DropFunctionStatement;
            0   11     1  clientState  Lorg/apache/cassandra/service/ClientState;
            4    9     2      rawType  Lorg/apache/cassandra/cql3/CQL3Type$Raw;
    Exceptions:
      throws org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
             Name  Flags
      clientState  

  public void prepareKeyspace(org.apache.cassandra.service.ClientState);
    descriptor: (Lorg/apache/cassandra/service/ClientState;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
        start local 1 // org.apache.cassandra.service.ClientState state
         0: .line 91
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            invokevirtual org.apache.cassandra.cql3.functions.FunctionName.hasKeyspace:()Z
            ifne 2
            aload 1 /* state */
            invokevirtual org.apache.cassandra.service.ClientState.getRawKeyspace:()Ljava/lang/String;
            ifnull 2
         1: .line 92
            aload 0 /* this */
            new org.apache.cassandra.cql3.functions.FunctionName
            dup
            aload 1 /* state */
            invokevirtual org.apache.cassandra.service.ClientState.getKeyspace:()Ljava/lang/String;
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            getfield org.apache.cassandra.cql3.functions.FunctionName.name:Ljava/lang/String;
            invokespecial org.apache.cassandra.cql3.functions.FunctionName.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            putfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
         2: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            invokevirtual org.apache.cassandra.cql3.functions.FunctionName.hasKeyspace:()Z
            ifne 4
         3: .line 95
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Functions must be fully qualified with a keyspace name if a keyspace is not set for the session"
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            getfield org.apache.cassandra.cql3.functions.FunctionName.keyspace:Ljava/lang/String;
            invokestatic org.apache.cassandra.thrift.ThriftValidation.validateKeyspaceNotSystem:(Ljava/lang/String;)V
         5: .line 98
            return
        end local 1 // org.apache.cassandra.service.ClientState state
        end local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/apache/cassandra/cql3/statements/DropFunctionStatement;
            0    6     1  state  Lorg/apache/cassandra/service/ClientState;
    Exceptions:
      throws org.apache.cassandra.exceptions.InvalidRequestException
    MethodParameters:
       Name  Flags
      state  

  public void checkAccess(org.apache.cassandra.service.ClientState);
    descriptor: (Lorg/apache/cassandra/service/ClientState;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=3, args_size=2
        start local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
        start local 1 // org.apache.cassandra.service.ClientState state
         0: .line 102
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.DropFunctionStatement.findFunction:()Lorg/apache/cassandra/cql3/functions/Function;
            astore 2 /* function */
        start local 2 // org.apache.cassandra.cql3.functions.Function function
         1: .line 103
            aload 2 /* function */
            ifnonnull 8
         2: .line 105
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.ifExists:Z
            ifne 12
         3: .line 106
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Unconfigured function %s.%s(%s)"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 107
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            getfield org.apache.cassandra.cql3.functions.FunctionName.keyspace:Ljava/lang/String;
            aastore
            dup
            iconst_1
         5: .line 108
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            getfield org.apache.cassandra.cql3.functions.FunctionName.name:Ljava/lang/String;
            aastore
            dup
            iconst_2
         6: .line 109
            ldc ","
            invokestatic com.google.common.base.Joiner.on:(Ljava/lang/String;)Lcom/google/common/base/Joiner;
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argRawTypes:Ljava/util/List;
            invokevirtual com.google.common.base.Joiner.join:(Ljava/lang/Iterable;)Ljava/lang/String;
            aastore
         7: .line 106
            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
         8: .line 113
      StackMap locals: org.apache.cassandra.cql3.functions.Function
      StackMap stack:
            aload 1 /* state */
            getstatic org.apache.cassandra.auth.Permission.DROP:Lorg/apache/cassandra/auth/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;
         9: .line 114
            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;
        10: .line 115
            aload 2 /* function */
            invokeinterface org.apache.cassandra.cql3.functions.Function.argTypes:()Ljava/util/List;
        11: .line 113
            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.ensureHasPermission:(Lorg/apache/cassandra/auth/Permission;Lorg/apache/cassandra/auth/IResource;)V
        12: .line 117
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.cassandra.cql3.functions.Function function
        end local 1 // org.apache.cassandra.service.ClientState state
        end local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Lorg/apache/cassandra/cql3/statements/DropFunctionStatement;
            0   13     1     state  Lorg/apache/cassandra/service/ClientState;
            1   13     2  function  Lorg/apache/cassandra/cql3/functions/Function;
    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=3, args_size=2
        start local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
        start local 1 // org.apache.cassandra.service.ClientState state
         0: .line 121
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            invokevirtual org.apache.cassandra.config.Schema.getFunctions:(Lorg/apache/cassandra/cql3/functions/FunctionName;)Ljava/util/Collection;
            astore 2 /* olds */
        start local 2 // java.util.Collection olds
         1: .line 123
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argsPresent:Z
            ifne 5
            aload 2 /* olds */
            ifnull 5
            aload 2 /* olds */
            invokeinterface java.util.Collection.size:()I
            iconst_1
            if_icmple 5
         2: .line 124
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "'DROP FUNCTION %s' matches multiple function definitions; specify the argument types by issuing a statement like 'DROP FUNCTION %s (type, type, ...)'. Hint: use cqlsh 'DESCRIBE FUNCTION %s' command to find all overloads"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         3: .line 128
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            aastore
         4: .line 124
            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 129
      StackMap locals: java.util.Collection
      StackMap stack:
            return
        end local 2 // java.util.Collection olds
        end local 1 // org.apache.cassandra.service.ClientState state
        end local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/apache/cassandra/cql3/statements/DropFunctionStatement;
            0    6     1  state  Lorg/apache/cassandra/service/ClientState;
            1    6     2   olds  Ljava/util/Collection<Lorg/apache/cassandra/cql3/functions/Function;>;
    MethodParameters:
       Name  Flags
      state  

  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=6, args_size=3
        start local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
        start local 1 // org.apache.cassandra.service.QueryState queryState
        start local 2 // boolean isLocalOnly
         0: .line 133
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.DropFunctionStatement.findFunction:()Lorg/apache/cassandra/cql3/functions/Function;
            astore 3 /* old */
        start local 3 // org.apache.cassandra.cql3.functions.Function old
         1: .line 134
            aload 3 /* old */
            ifnonnull 5
         2: .line 136
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.ifExists:Z
            ifeq 4
         3: .line 137
            aconst_null
            areturn
         4: .line 139
      StackMap locals: org.apache.cassandra.cql3.functions.Function
      StackMap stack:
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            aload 0 /* this */
            invokevirtual org.apache.cassandra.cql3.statements.DropFunctionStatement.getMissingFunctionError:()Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.InvalidRequestException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 142
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 3 /* old */
            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;
            invokevirtual org.apache.cassandra.config.Schema.getKSMetaData:(Ljava/lang/String;)Lorg/apache/cassandra/schema/KeyspaceMetadata;
            astore 4 /* ksm */
        start local 4 // org.apache.cassandra.schema.KeyspaceMetadata ksm
         6: .line 143
            aload 4 /* ksm */
            getfield org.apache.cassandra.schema.KeyspaceMetadata.functions:Lorg/apache/cassandra/schema/Functions;
            aload 3 /* old */
            invokevirtual org.apache.cassandra.schema.Functions.aggregatesUsingFunction:(Lorg/apache/cassandra/cql3/functions/Function;)Ljava/util/Collection;
            astore 5 /* referrers */
        start local 5 // java.util.Collection referrers
         7: .line 144
            aload 5 /* referrers */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifne 9
         8: .line 145
            new org.apache.cassandra.exceptions.InvalidRequestException
            dup
            ldc "Function '%s' still referenced by %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* old */
            aastore
            dup
            iconst_1
            aload 5 /* referrers */
            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
         9: .line 147
      StackMap locals: org.apache.cassandra.schema.KeyspaceMetadata java.util.Collection
      StackMap stack:
            aload 3 /* old */
            checkcast org.apache.cassandra.cql3.functions.UDFunction
            iload 2 /* isLocalOnly */
            invokestatic org.apache.cassandra.service.MigrationManager.announceFunctionDrop:(Lorg/apache/cassandra/cql3/functions/UDFunction;Z)V
        10: .line 149
            new org.apache.cassandra.transport.Event$SchemaChange
            dup
            getstatic org.apache.cassandra.transport.Event$SchemaChange$Change.DROPPED:Lorg/apache/cassandra/transport/Event$SchemaChange$Change;
            getstatic org.apache.cassandra.transport.Event$SchemaChange$Target.FUNCTION:Lorg/apache/cassandra/transport/Event$SchemaChange$Target;
        11: .line 150
            aload 3 /* old */
            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;
            aload 3 /* old */
            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;
            aload 3 /* old */
            invokeinterface org.apache.cassandra.cql3.functions.Function.argTypes:()Ljava/util/List;
            invokestatic org.apache.cassandra.db.marshal.AbstractType.asCQLTypeStringList:(Ljava/util/List;)Ljava/util/List;
        12: .line 149
            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;Ljava/util/List;)V
            areturn
        end local 5 // java.util.Collection referrers
        end local 4 // org.apache.cassandra.schema.KeyspaceMetadata ksm
        end local 3 // org.apache.cassandra.cql3.functions.Function old
        end local 2 // boolean isLocalOnly
        end local 1 // org.apache.cassandra.service.QueryState queryState
        end local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lorg/apache/cassandra/cql3/statements/DropFunctionStatement;
            0   13     1   queryState  Lorg/apache/cassandra/service/QueryState;
            0   13     2  isLocalOnly  Z
            1   13     3          old  Lorg/apache/cassandra/cql3/functions/Function;
            6   13     4          ksm  Lorg/apache/cassandra/schema/KeyspaceMetadata;
            7   13     5    referrers  Ljava/util/Collection<Lorg/apache/cassandra/cql3/functions/UDAggregate;>;
    Exceptions:
      throws org.apache.cassandra.exceptions.RequestValidationException
    MethodParameters:
             Name  Flags
      queryState   
      isLocalOnly  

  private java.lang.String getMissingFunctionError();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
         0: .line 156
            new java.lang.StringBuilder
            dup
            ldc "Cannot drop non existing function '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 157
            aload 1 /* sb */
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         2: .line 158
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argsPresent:Z
            ifeq 4
         3: .line 159
            aload 1 /* sb */
            ldc ", "
            invokestatic com.google.common.base.Joiner.on:(Ljava/lang/String;)Lcom/google/common/base/Joiner;
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argRawTypes:Ljava/util/List;
            invokevirtual com.google.common.base.Joiner.join:(Ljava/lang/Iterable;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 160
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 1 /* sb */
            bipush 39
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         5: .line 161
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/apache/cassandra/cql3/statements/DropFunctionStatement;
            1    6     1    sb  Ljava/lang/StringBuilder;

  private org.apache.cassandra.cql3.functions.Function findFunction();
    descriptor: ()Lorg/apache/cassandra/cql3/functions/Function;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
         0: .line 167
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argsPresent:Z
            ifeq 6
         1: .line 169
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argTypes:Ljava/util/List;
            ifnonnull 3
         2: .line 171
            aconst_null
            areturn
         3: .line 174
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.argTypes:Ljava/util/List;
            invokevirtual org.apache.cassandra.config.Schema.findFunction:(Lorg/apache/cassandra/cql3/functions/FunctionName;Ljava/util/List;)Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.cql3.functions.Function
            astore 1 /* old */
        start local 1 // org.apache.cassandra.cql3.functions.Function old
         4: .line 175
            aload 1 /* old */
            ifnull 5
            aload 1 /* old */
            instanceof org.apache.cassandra.cql3.functions.ScalarFunction
            ifne 10
         5: .line 177
      StackMap locals: org.apache.cassandra.cql3.functions.Function
      StackMap stack:
            aconst_null
            areturn
        end local 1 // org.apache.cassandra.cql3.functions.Function old
         6: .line 182
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 0 /* this */
            getfield org.apache.cassandra.cql3.statements.DropFunctionStatement.functionName:Lorg/apache/cassandra/cql3/functions/FunctionName;
            invokevirtual org.apache.cassandra.config.Schema.getFunctions:(Lorg/apache/cassandra/cql3/functions/FunctionName;)Ljava/util/Collection;
            astore 2 /* olds */
        start local 2 // java.util.Collection olds
         7: .line 183
            aload 2 /* olds */
            ifnull 8
            aload 2 /* olds */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifne 8
            aload 2 /* olds */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            instanceof org.apache.cassandra.cql3.functions.ScalarFunction
            ifne 9
         8: .line 184
      StackMap locals: org.apache.cassandra.cql3.statements.DropFunctionStatement top java.util.Collection
      StackMap stack:
            aconst_null
            areturn
         9: .line 186
      StackMap locals:
      StackMap stack:
            aload 2 /* olds */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.cql3.functions.Function
            astore 1 /* old */
        end local 2 // java.util.Collection olds
        start local 1 // org.apache.cassandra.cql3.functions.Function old
        10: .line 188
      StackMap locals: org.apache.cassandra.cql3.statements.DropFunctionStatement org.apache.cassandra.cql3.functions.Function
      StackMap stack:
            aload 1 /* old */
            areturn
        end local 1 // org.apache.cassandra.cql3.functions.Function old
        end local 0 // org.apache.cassandra.cql3.statements.DropFunctionStatement this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/apache/cassandra/cql3/statements/DropFunctionStatement;
            4    6     1   old  Lorg/apache/cassandra/cql3/functions/Function;
           10   11     1   old  Lorg/apache/cassandra/cql3/functions/Function;
            7   10     2  olds  Ljava/util/Collection<Lorg/apache/cassandra/cql3/functions/Function;>;
}
SourceFile: "DropFunctionStatement.java"
InnerClasses:
  public abstract Raw = org.apache.cassandra.cql3.CQL3Type$Raw of org.apache.cassandra.cql3.CQL3Type
  public Prepared = org.apache.cassandra.cql3.statements.ParsedStatement$Prepared of org.apache.cassandra.cql3.statements.ParsedStatement
  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