public final class org.apache.cassandra.cql3.functions.CastFcts
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.cassandra.cql3.functions.CastFcts
  super_class: java.lang.Object
{
  private static final java.lang.String FUNCTION_NAME_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "castAs"

  public static java.util.Collection<org.apache.cassandra.cql3.functions.Function> all();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=0
         0: .line 61
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 0 /* functions */
        start local 0 // java.util.List functions
         1: .line 64
            bipush 9
            anewarray org.apache.cassandra.db.marshal.AbstractType
            dup
            iconst_0
            getstatic org.apache.cassandra.db.marshal.ByteType.instance:Lorg/apache/cassandra/db/marshal/ByteType;
            aastore
            dup
            iconst_1
         2: .line 65
            getstatic org.apache.cassandra.db.marshal.ShortType.instance:Lorg/apache/cassandra/db/marshal/ShortType;
            aastore
            dup
            iconst_2
         3: .line 66
            getstatic org.apache.cassandra.db.marshal.Int32Type.instance:Lorg/apache/cassandra/db/marshal/Int32Type;
            aastore
            dup
            iconst_3
         4: .line 67
            getstatic org.apache.cassandra.db.marshal.LongType.instance:Lorg/apache/cassandra/db/marshal/LongType;
            aastore
            dup
            iconst_4
         5: .line 68
            getstatic org.apache.cassandra.db.marshal.FloatType.instance:Lorg/apache/cassandra/db/marshal/FloatType;
            aastore
            dup
            iconst_5
         6: .line 69
            getstatic org.apache.cassandra.db.marshal.DoubleType.instance:Lorg/apache/cassandra/db/marshal/DoubleType;
            aastore
            dup
            bipush 6
         7: .line 70
            getstatic org.apache.cassandra.db.marshal.DecimalType.instance:Lorg/apache/cassandra/db/marshal/DecimalType;
            aastore
            dup
            bipush 7
         8: .line 71
            getstatic org.apache.cassandra.db.marshal.CounterColumnType.instance:Lorg/apache/cassandra/db/marshal/CounterColumnType;
            aastore
            dup
            bipush 8
         9: .line 72
            getstatic org.apache.cassandra.db.marshal.IntegerType.instance:Lorg/apache/cassandra/db/marshal/IntegerType;
            aastore
        10: .line 64
            astore 1 /* numericTypes */
        start local 1 // org.apache.cassandra.db.marshal.AbstractType[] numericTypes
        11: .line 74
            aload 1 /* numericTypes */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 24
      StackMap locals: java.util.List org.apache.cassandra.db.marshal.AbstractType[] top int int org.apache.cassandra.db.marshal.AbstractType[]
      StackMap stack:
        12: aload 5
            iload 3
            aaload
            astore 2 /* inputType */
        start local 2 // org.apache.cassandra.db.marshal.AbstractType inputType
        13: .line 76
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.ByteType.instance:Lorg/apache/cassandra/db/marshal/ByteType;
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  java/lang/Number.byteValue()B (5)
                  (Ljava/lang/Number;)Ljava/lang/Byte;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.addFunctionIfNeeded:(Ljava/util/List;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)V
        14: .line 77
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.ShortType.instance:Lorg/apache/cassandra/db/marshal/ShortType;
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  java/lang/Number.shortValue()S (5)
                  (Ljava/lang/Number;)Ljava/lang/Short;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.addFunctionIfNeeded:(Ljava/util/List;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)V
        15: .line 78
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.Int32Type.instance:Lorg/apache/cassandra/db/marshal/Int32Type;
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  java/lang/Number.intValue()I (5)
                  (Ljava/lang/Number;)Ljava/lang/Integer;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.addFunctionIfNeeded:(Ljava/util/List;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)V
        16: .line 79
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.LongType.instance:Lorg/apache/cassandra/db/marshal/LongType;
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  java/lang/Number.longValue()J (5)
                  (Ljava/lang/Number;)Ljava/lang/Long;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.addFunctionIfNeeded:(Ljava/util/List;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)V
        17: .line 80
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.FloatType.instance:Lorg/apache/cassandra/db/marshal/FloatType;
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  java/lang/Number.floatValue()F (5)
                  (Ljava/lang/Number;)Ljava/lang/Float;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.addFunctionIfNeeded:(Ljava/util/List;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)V
        18: .line 81
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.DoubleType.instance:Lorg/apache/cassandra/db/marshal/DoubleType;
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  java/lang/Number.doubleValue()D (5)
                  (Ljava/lang/Number;)Ljava/lang/Double;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.addFunctionIfNeeded:(Ljava/util/List;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)V
        19: .line 82
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.DecimalType.instance:Lorg/apache/cassandra/db/marshal/DecimalType;
            aload 2 /* inputType */
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.getDecimalConversionFunction:(Lorg/apache/cassandra/db/marshal/AbstractType;)Ljava/util/function/Function;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.addFunctionIfNeeded:(Ljava/util/List;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)V
        20: .line 83
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.IntegerType.instance:Lorg/apache/cassandra/db/marshal/IntegerType;
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  org/apache/cassandra/cql3/functions/CastFcts.lambda$6(Ljava/lang/Number;)Ljava/math/BigInteger; (6)
                  (Ljava/lang/Number;)Ljava/math/BigInteger;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.addFunctionIfNeeded:(Ljava/util/List;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)V
        21: .line 84
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.AsciiType.instance:Lorg/apache/cassandra/db/marshal/AsciiType;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        22: .line 85
            aload 0 /* functions */
            aload 2 /* inputType */
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // org.apache.cassandra.db.marshal.AbstractType inputType
        23: .line 74
            iinc 3 1
      StackMap locals:
      StackMap stack:
        24: iload 3
            iload 4
            if_icmplt 12
        25: .line 88
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.AsciiType.instance:Lorg/apache/cassandra/db/marshal/AsciiType;
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  org/apache/cassandra/cql3/functions/CastFcts.lambda$7(Ljava/lang/String;)Ljava/lang/String; (6)
                  (Ljava/lang/String;)Ljava/lang/String;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$JavaFunctionWrapper.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)Lorg/apache/cassandra/cql3/functions/CastFcts$JavaFunctionWrapper;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        26: .line 90
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.InetAddressType.instance:Lorg/apache/cassandra/db/marshal/InetAddressType;
            getstatic org.apache.cassandra.db.marshal.AsciiType.instance:Lorg/apache/cassandra/db/marshal/AsciiType;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        27: .line 91
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.InetAddressType.instance:Lorg/apache/cassandra/db/marshal/InetAddressType;
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        28: .line 93
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.BooleanType.instance:Lorg/apache/cassandra/db/marshal/BooleanType;
            getstatic org.apache.cassandra.db.marshal.AsciiType.instance:Lorg/apache/cassandra/db/marshal/AsciiType;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        29: .line 94
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.BooleanType.instance:Lorg/apache/cassandra/db/marshal/BooleanType;
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        30: .line 96
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.TimeUUIDType.instance:Lorg/apache/cassandra/db/marshal/TimeUUIDType;
            getstatic org.apache.cassandra.db.marshal.SimpleDateType.instance:Lorg/apache/cassandra/db/marshal/SimpleDateType;
            getstatic org.apache.cassandra.cql3.functions.TimeFcts.timeUuidtoDate:Lorg/apache/cassandra/cql3/functions/NativeScalarFunction;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CassandraFunctionWrapper.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/cql3/functions/NativeScalarFunction;)Lorg/apache/cassandra/cql3/functions/CastFcts$CassandraFunctionWrapper;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        31: .line 97
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.TimeUUIDType.instance:Lorg/apache/cassandra/db/marshal/TimeUUIDType;
            getstatic org.apache.cassandra.db.marshal.TimestampType.instance:Lorg/apache/cassandra/db/marshal/TimestampType;
            getstatic org.apache.cassandra.cql3.functions.TimeFcts.timeUuidToTimestamp:Lorg/apache/cassandra/cql3/functions/NativeScalarFunction;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CassandraFunctionWrapper.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/cql3/functions/NativeScalarFunction;)Lorg/apache/cassandra/cql3/functions/CastFcts$CassandraFunctionWrapper;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        32: .line 98
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.TimeUUIDType.instance:Lorg/apache/cassandra/db/marshal/TimeUUIDType;
            getstatic org.apache.cassandra.db.marshal.AsciiType.instance:Lorg/apache/cassandra/db/marshal/AsciiType;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        33: .line 99
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.TimeUUIDType.instance:Lorg/apache/cassandra/db/marshal/TimeUUIDType;
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        34: .line 100
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.TimestampType.instance:Lorg/apache/cassandra/db/marshal/TimestampType;
            getstatic org.apache.cassandra.db.marshal.SimpleDateType.instance:Lorg/apache/cassandra/db/marshal/SimpleDateType;
            getstatic org.apache.cassandra.cql3.functions.TimeFcts.timestampToDate:Lorg/apache/cassandra/cql3/functions/NativeScalarFunction;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CassandraFunctionWrapper.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/cql3/functions/NativeScalarFunction;)Lorg/apache/cassandra/cql3/functions/CastFcts$CassandraFunctionWrapper;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        35: .line 101
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.TimestampType.instance:Lorg/apache/cassandra/db/marshal/TimestampType;
            getstatic org.apache.cassandra.db.marshal.AsciiType.instance:Lorg/apache/cassandra/db/marshal/AsciiType;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        36: .line 102
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.TimestampType.instance:Lorg/apache/cassandra/db/marshal/TimestampType;
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        37: .line 103
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.SimpleDateType.instance:Lorg/apache/cassandra/db/marshal/SimpleDateType;
            getstatic org.apache.cassandra.db.marshal.TimestampType.instance:Lorg/apache/cassandra/db/marshal/TimestampType;
            getstatic org.apache.cassandra.cql3.functions.TimeFcts.dateToTimestamp:Lorg/apache/cassandra/cql3/functions/NativeScalarFunction;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CassandraFunctionWrapper.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/cql3/functions/NativeScalarFunction;)Lorg/apache/cassandra/cql3/functions/CastFcts$CassandraFunctionWrapper;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        38: .line 104
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.SimpleDateType.instance:Lorg/apache/cassandra/db/marshal/SimpleDateType;
            getstatic org.apache.cassandra.db.marshal.AsciiType.instance:Lorg/apache/cassandra/db/marshal/AsciiType;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        39: .line 105
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.SimpleDateType.instance:Lorg/apache/cassandra/db/marshal/SimpleDateType;
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        40: .line 106
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.TimeType.instance:Lorg/apache/cassandra/db/marshal/TimeType;
            getstatic org.apache.cassandra.db.marshal.AsciiType.instance:Lorg/apache/cassandra/db/marshal/AsciiType;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        41: .line 107
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.TimeType.instance:Lorg/apache/cassandra/db/marshal/TimeType;
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        42: .line 109
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.UUIDType.instance:Lorg/apache/cassandra/db/marshal/UUIDType;
            getstatic org.apache.cassandra.db.marshal.AsciiType.instance:Lorg/apache/cassandra/db/marshal/AsciiType;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        43: .line 110
            aload 0 /* functions */
            getstatic org.apache.cassandra.db.marshal.UUIDType.instance:Lorg/apache/cassandra/db/marshal/UUIDType;
            getstatic org.apache.cassandra.db.marshal.UTF8Type.instance:Lorg/apache/cassandra/db/marshal/UTF8Type;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;)Lorg/apache/cassandra/cql3/functions/CastFcts$CastAsTextFunction;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        44: .line 112
            aload 0 /* functions */
            areturn
        end local 1 // org.apache.cassandra.db.marshal.AbstractType[] numericTypes
        end local 0 // java.util.List functions
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            1   45     0     functions  Ljava/util/List<Lorg/apache/cassandra/cql3/functions/Function;>;
           11   45     1  numericTypes  [Lorg/apache/cassandra/db/marshal/AbstractType;
           13   23     2     inputType  Lorg/apache/cassandra/db/marshal/AbstractType<+Ljava/lang/Number;>;
    Signature: ()Ljava/util/Collection<Lorg/apache/cassandra/cql3/functions/Function;>;

  private static <I extends java.lang.Number> java.util.function.Function<I, java.math.BigDecimal> getDecimalConversionFunction(org.apache.cassandra.db.marshal.AbstractType<? extends java.lang.Number>);
    descriptor: (Lorg/apache/cassandra/db/marshal/AbstractType;)Ljava/util/function/Function;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.marshal.AbstractType inputType
         0: .line 123
            aload 0 /* inputType */
            getstatic org.apache.cassandra.db.marshal.FloatType.instance:Lorg/apache/cassandra/db/marshal/FloatType;
            if_acmpeq 1
            aload 0 /* inputType */
            getstatic org.apache.cassandra.db.marshal.DoubleType.instance:Lorg/apache/cassandra/db/marshal/DoubleType;
            if_acmpne 2
         1: .line 124
      StackMap locals:
      StackMap stack:
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  org/apache/cassandra/cql3/functions/CastFcts.lambda$8(Ljava/lang/Number;)Ljava/math/BigDecimal; (6)
                  (Ljava/lang/Number;)Ljava/math/BigDecimal;
            areturn
         2: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* inputType */
            getstatic org.apache.cassandra.db.marshal.IntegerType.instance:Lorg/apache/cassandra/db/marshal/IntegerType;
            if_acmpne 4
         3: .line 127
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  org/apache/cassandra/cql3/functions/CastFcts.lambda$9(Ljava/lang/Number;)Ljava/math/BigDecimal; (6)
                  (Ljava/lang/Number;)Ljava/math/BigDecimal;
            areturn
         4: .line 129
      StackMap locals:
      StackMap stack:
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  org/apache/cassandra/cql3/functions/CastFcts.lambda$10(Ljava/lang/Number;)Ljava/math/BigDecimal; (6)
                  (Ljava/lang/Number;)Ljava/math/BigDecimal;
            areturn
        end local 0 // org.apache.cassandra.db.marshal.AbstractType inputType
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  inputType  Lorg/apache/cassandra/db/marshal/AbstractType<+Ljava/lang/Number;>;
    Signature: <I:Ljava/lang/Number;>(Lorg/apache/cassandra/db/marshal/AbstractType<+Ljava/lang/Number;>;)Ljava/util/function/Function<TI;Ljava/math/BigDecimal;>;
    MethodParameters:
           Name  Flags
      inputType  

  public static java.lang.String getFunctionName(org.apache.cassandra.db.marshal.AbstractType<?>);
    descriptor: (Lorg/apache/cassandra/db/marshal/AbstractType;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.marshal.AbstractType outputType
         0: .line 140
            aload 0 /* outputType */
            invokevirtual org.apache.cassandra.db.marshal.AbstractType.asCQL3Type:()Lorg/apache/cassandra/cql3/CQL3Type;
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.getFunctionName:(Lorg/apache/cassandra/cql3/CQL3Type;)Ljava/lang/String;
            areturn
        end local 0 // org.apache.cassandra.db.marshal.AbstractType outputType
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  outputType  Lorg/apache/cassandra/db/marshal/AbstractType<*>;
    Signature: (Lorg/apache/cassandra/db/marshal/AbstractType<*>;)Ljava/lang/String;
    MethodParameters:
            Name  Flags
      outputType  

  public static java.lang.String getFunctionName(org.apache.cassandra.cql3.CQL3Type);
    descriptor: (Lorg/apache/cassandra/cql3/CQL3Type;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.cassandra.cql3.CQL3Type outputType
         0: .line 151
            new java.lang.StringBuilder
            dup
            ldc "castAs"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* outputType */
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.toLowerCaseString:(Lorg/apache/cassandra/cql3/CQL3Type;)Ljava/lang/String;
            invokestatic org.apache.commons.lang3.text.WordUtils.capitalize:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.cassandra.cql3.CQL3Type outputType
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  outputType  Lorg/apache/cassandra/cql3/CQL3Type;
    MethodParameters:
            Name  Flags
      outputType  

  private static <I, O> void addFunctionIfNeeded(java.util.List<org.apache.cassandra.cql3.functions.Function>, org.apache.cassandra.db.marshal.AbstractType<I>, org.apache.cassandra.db.marshal.AbstractType<O>, java.util.function.Function<I, O>);
    descriptor: (Ljava/util/List;Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // java.util.List functions
        start local 1 // org.apache.cassandra.db.marshal.AbstractType inputType
        start local 2 // org.apache.cassandra.db.marshal.AbstractType outputType
        start local 3 // java.util.function.Function converter
         0: .line 167
            aload 1 /* inputType */
            aload 2 /* outputType */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 168
            aload 0 /* functions */
            aload 1 /* inputType */
            aload 2 /* outputType */
            aload 3 /* converter */
            invokestatic org.apache.cassandra.cql3.functions.CastFcts.wrapJavaFunction:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)Lorg/apache/cassandra/cql3/functions/Function;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 169
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.function.Function converter
        end local 2 // org.apache.cassandra.db.marshal.AbstractType outputType
        end local 1 // org.apache.cassandra.db.marshal.AbstractType inputType
        end local 0 // java.util.List functions
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0   functions  Ljava/util/List<Lorg/apache/cassandra/cql3/functions/Function;>;
            0    3     1   inputType  Lorg/apache/cassandra/db/marshal/AbstractType<TI;>;
            0    3     2  outputType  Lorg/apache/cassandra/db/marshal/AbstractType<TO;>;
            0    3     3   converter  Ljava/util/function/Function<TI;TO;>;
    Signature: <I:Ljava/lang/Object;O:Ljava/lang/Object;>(Ljava/util/List<Lorg/apache/cassandra/cql3/functions/Function;>;Lorg/apache/cassandra/db/marshal/AbstractType<TI;>;Lorg/apache/cassandra/db/marshal/AbstractType<TO;>;Ljava/util/function/Function<TI;TO;>;)V
    MethodParameters:
            Name  Flags
      functions   
      inputType   
      outputType  
      converter   

  private static <O, I> org.apache.cassandra.cql3.functions.Function wrapJavaFunction(org.apache.cassandra.db.marshal.AbstractType<I>, org.apache.cassandra.db.marshal.AbstractType<O>, java.util.function.Function<I, O>);
    descriptor: (Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)Lorg/apache/cassandra/cql3/functions/Function;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.cassandra.db.marshal.AbstractType inputType
        start local 1 // org.apache.cassandra.db.marshal.AbstractType outputType
        start local 2 // java.util.function.Function converter
         0: .line 176
            aload 0 /* inputType */
            getstatic org.apache.cassandra.db.marshal.CounterColumnType.instance:Lorg/apache/cassandra/db/marshal/CounterColumnType;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 177
            aload 1 /* outputType */
            aload 2 /* converter */
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$JavaCounterFunctionWrapper.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)Lorg/apache/cassandra/cql3/functions/CastFcts$JavaFunctionWrapper;
            goto 3
         2: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* inputType */
            aload 1 /* outputType */
            aload 2 /* converter */
            invokestatic org.apache.cassandra.cql3.functions.CastFcts$JavaFunctionWrapper.create:(Lorg/apache/cassandra/db/marshal/AbstractType;Lorg/apache/cassandra/db/marshal/AbstractType;Ljava/util/function/Function;)Lorg/apache/cassandra/cql3/functions/CastFcts$JavaFunctionWrapper;
         3: .line 176
      StackMap locals:
      StackMap stack: org.apache.cassandra.cql3.functions.CastFcts$JavaFunctionWrapper
            areturn
        end local 2 // java.util.function.Function converter
        end local 1 // org.apache.cassandra.db.marshal.AbstractType outputType
        end local 0 // org.apache.cassandra.db.marshal.AbstractType inputType
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0   inputType  Lorg/apache/cassandra/db/marshal/AbstractType<TI;>;
            0    4     1  outputType  Lorg/apache/cassandra/db/marshal/AbstractType<TO;>;
            0    4     2   converter  Ljava/util/function/Function<TI;TO;>;
    Signature: <O:Ljava/lang/Object;I:Ljava/lang/Object;>(Lorg/apache/cassandra/db/marshal/AbstractType<TI;>;Lorg/apache/cassandra/db/marshal/AbstractType<TO;>;Ljava/util/function/Function<TI;TO;>;)Lorg/apache/cassandra/cql3/functions/Function;
    MethodParameters:
            Name  Flags
      inputType   
      outputType  
      converter   

  private static java.lang.String toLowerCaseString(org.apache.cassandra.cql3.CQL3Type);
    descriptor: (Lorg/apache/cassandra/cql3/CQL3Type;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.cql3.CQL3Type type
         0: .line 183
            aload 0 /* type */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.cassandra.cql3.CQL3Type type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Lorg/apache/cassandra/cql3/CQL3Type;
    MethodParameters:
      Name  Flags
      type  

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.cql3.functions.CastFcts this
         0: .line 358
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 360
            return
        end local 0 // org.apache.cassandra.cql3.functions.CastFcts this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/cql3/functions/CastFcts;

  private static java.math.BigInteger lambda$6(java.lang.Number);
    descriptor: (Ljava/lang/Number;)Ljava/math/BigInteger;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Number p
         0: .line 83
            aload 0 /* p */
            invokevirtual java.lang.Number.longValue:()J
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            areturn
        end local 0 // java.lang.Number p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     p  Ljava/lang/Number;

  private static java.lang.String lambda$7(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String p
         0: .line 88
            aload 0 /* p */
            areturn
        end local 0 // java.lang.String p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     p  Ljava/lang/String;

  private static java.math.BigDecimal lambda$8(java.lang.Number);
    descriptor: (Ljava/lang/Number;)Ljava/math/BigDecimal;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Number p
         0: .line 124
            aload 0 /* p */
            invokevirtual java.lang.Number.doubleValue:()D
            invokestatic java.math.BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
            areturn
        end local 0 // java.lang.Number p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     p  TI;

  private static java.math.BigDecimal lambda$9(java.lang.Number);
    descriptor: (Ljava/lang/Number;)Ljava/math/BigDecimal;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Number p
         0: .line 127
            new java.math.BigDecimal
            dup
            aload 0 /* p */
            checkcast java.math.BigInteger
            invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;)V
            areturn
        end local 0 // java.lang.Number p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     p  TI;

  private static java.math.BigDecimal lambda$10(java.lang.Number);
    descriptor: (Ljava/lang/Number;)Ljava/math/BigDecimal;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Number p
         0: .line 129
            aload 0 /* p */
            invokevirtual java.lang.Number.longValue:()J
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            areturn
        end local 0 // java.lang.Number p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     p  TI;
}
SourceFile: "CastFcts.java"
NestMembers:
  org.apache.cassandra.cql3.functions.CastFcts$CassandraFunctionWrapper  org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction  org.apache.cassandra.cql3.functions.CastFcts$CastFunction  org.apache.cassandra.cql3.functions.CastFcts$JavaCounterFunctionWrapper  org.apache.cassandra.cql3.functions.CastFcts$JavaFunctionWrapper
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  private final CassandraFunctionWrapper = org.apache.cassandra.cql3.functions.CastFcts$CassandraFunctionWrapper of org.apache.cassandra.cql3.functions.CastFcts
  private final CastAsTextFunction = org.apache.cassandra.cql3.functions.CastFcts$CastAsTextFunction of org.apache.cassandra.cql3.functions.CastFcts
  private abstract CastFunction = org.apache.cassandra.cql3.functions.CastFcts$CastFunction of org.apache.cassandra.cql3.functions.CastFcts
  private JavaCounterFunctionWrapper = org.apache.cassandra.cql3.functions.CastFcts$JavaCounterFunctionWrapper of org.apache.cassandra.cql3.functions.CastFcts
  private JavaFunctionWrapper = org.apache.cassandra.cql3.functions.CastFcts$JavaFunctionWrapper of org.apache.cassandra.cql3.functions.CastFcts