// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.math.vector;

import com.hypixel.hytale.math.util.HashUtil;
import javax.annotation.Nullable;
import com.hypixel.hytale.math.util.MathUtil;
import com.hypixel.hytale.math.util.TrigMathUtil;
import java.util.Random;
import com.hypixel.hytale.math.codec.Vector3dArrayCodec;
import javax.annotation.Nonnull;
import com.hypixel.hytale.codec.builder.BuilderCodec;

public class Vector3d
{
    @Nonnull
    public static final BuilderCodec<Vector3d> CODEC;
    @Deprecated
    public static final Vector3dArrayCodec AS_ARRAY_CODEC;
    public static final Vector3d ZERO;
    public static final Vector3d UP;
    public static final Vector3d POS_Y;
    public static final Vector3d DOWN;
    public static final Vector3d NEG_Y;
    public static final Vector3d FORWARD;
    public static final Vector3d NEG_Z;
    public static final Vector3d NORTH;
    public static final Vector3d BACKWARD;
    public static final Vector3d POS_Z;
    public static final Vector3d SOUTH;
    public static final Vector3d RIGHT;
    public static final Vector3d POS_X;
    public static final Vector3d EAST;
    public static final Vector3d LEFT;
    public static final Vector3d NEG_X;
    public static final Vector3d WEST;
    public static final Vector3d ALL_ONES;
    public static final Vector3d MIN;
    public static final Vector3d MAX;
    public static final Vector3d[] BLOCK_SIDES;
    public static final Vector3d[] BLOCK_EDGES;
    public static final Vector3d[] BLOCK_CORNERS;
    public static final Vector3d[][] BLOCK_PARTS;
    public static final Vector3d[] CARDINAL_DIRECTIONS;
    public double x;
    public double y;
    public double z;
    private transient int hash;
    
    public Vector3d() {
        this(0.0, 0.0, 0.0);
    }
    
    public Vector3d(@Nonnull final Vector3d v) {
        this(v.x, v.y, v.z);
    }
    
    public Vector3d(@Nonnull final Vector3i v) {
        this(v.x, v.y, v.z);
    }
    
    public Vector3d(final double x, final double y, final double z) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.hash = 0;
    }
    
    public Vector3d(final float yaw, final float pitch) {
        this();
        this.assign(yaw, pitch);
    }
    
    public Vector3d(@Nonnull final Random random, final double length) {
        this(random.nextFloat() * 6.2831855f, random.nextFloat() * 6.2831855f);
        this.scale(length);
    }
    
    public double getX() {
        return this.x;
    }
    
    public void setX(final double x) {
        this.x = x;
        this.hash = 0;
    }
    
    public double getY() {
        return this.y;
    }
    
    public void setY(final double y) {
        this.y = y;
        this.hash = 0;
    }
    
    public double getZ() {
        return this.z;
    }
    
    public void setZ(final double z) {
        this.z = z;
        this.hash = 0;
    }
    
    @Nonnull
    public Vector3d assign(@Nonnull final Vector3d v) {
        this.x = v.x;
        this.y = v.y;
        this.z = v.z;
        this.hash = v.hash;
        return this;
    }
    
    @Nonnull
    public Vector3d assign(final double v) {
        this.x = v;
        this.y = v;
        this.z = v;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d assign(@Nonnull final double[] v) {
        this.x = v[0];
        this.y = v[1];
        this.z = v[2];
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d assign(@Nonnull final float[] v) {
        this.x = v[0];
        this.y = v[1];
        this.z = v[2];
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d assign(final double yaw, final double pitch) {
        final double len = TrigMathUtil.cos(pitch);
        final double x = len * -TrigMathUtil.sin(yaw);
        final double y = TrigMathUtil.sin(pitch);
        final double z = len * -TrigMathUtil.cos(yaw);
        return this.assign(x, y, z);
    }
    
    @Nonnull
    public Vector3d assign(final double x, final double y, final double z) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d add(@Nonnull final Vector3d v) {
        this.x += v.x;
        this.y += v.y;
        this.z += v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d add(@Nonnull final Vector3i v) {
        this.x += v.x;
        this.y += v.y;
        this.z += v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d add(final double x, final double y, final double z) {
        this.x += x;
        this.y += y;
        this.z += z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d add(final double value) {
        this.x += value;
        this.y += value;
        this.z += value;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d addScaled(@Nonnull final Vector3d v, final double s) {
        this.x += v.x * s;
        this.y += v.y * s;
        this.z += v.z * s;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d subtract(@Nonnull final Vector3d v) {
        this.x -= v.x;
        this.y -= v.y;
        this.z -= v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d subtract(@Nonnull final Vector3i v) {
        this.x -= v.x;
        this.y -= v.y;
        this.z -= v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d subtract(final double x, final double y, final double z) {
        this.x -= x;
        this.y -= y;
        this.z -= z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d subtract(final double value) {
        this.x -= value;
        this.y -= value;
        this.z -= value;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d negate() {
        this.x = -this.x;
        this.y = -this.y;
        this.z = -this.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d scale(final double s) {
        this.x *= s;
        this.y *= s;
        this.z *= s;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d scale(@Nonnull final Vector3d p) {
        this.x *= p.x;
        this.y *= p.y;
        this.z *= p.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d cross(@Nonnull final Vector3d v) {
        final double x0 = this.y * v.z - this.z * v.y;
        final double y0 = this.z * v.x - this.x * v.z;
        final double z0 = this.x * v.y - this.y * v.x;
        return new Vector3d(x0, y0, z0);
    }
    
    @Nonnull
    public Vector3d cross(@Nonnull final Vector3d v, @Nonnull final Vector3d res) {
        res.assign(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x);
        return this;
    }
    
    public double dot(@Nonnull final Vector3d other) {
        return this.x * other.x + this.y * other.y + this.z * other.z;
    }
    
    public double distanceTo(@Nonnull final Vector3d v) {
        return Math.sqrt(this.distanceSquaredTo(v));
    }
    
    public double distanceTo(@Nonnull final Vector3i v) {
        return Math.sqrt(this.distanceSquaredTo(v));
    }
    
    public double distanceTo(final double x, final double y, final double z) {
        return Math.sqrt(this.distanceSquaredTo(x, y, z));
    }
    
    public double distanceSquaredTo(@Nonnull final Vector3d v) {
        final double x0 = v.x - this.x;
        final double y0 = v.y - this.y;
        final double z0 = v.z - this.z;
        return x0 * x0 + y0 * y0 + z0 * z0;
    }
    
    public double distanceSquaredTo(@Nonnull final Vector3i v) {
        final double x0 = v.x - this.x;
        final double y0 = v.y - this.y;
        final double z0 = v.z - this.z;
        return x0 * x0 + y0 * y0 + z0 * z0;
    }
    
    public double distanceSquaredTo(double x, double y, double z) {
        x -= this.x;
        y -= this.y;
        z -= this.z;
        return x * x + y * y + z * z;
    }
    
    @Nonnull
    public Vector3d normalize() {
        return this.setLength(1.0);
    }
    
    public double length() {
        return Math.sqrt(this.squaredLength());
    }
    
    public double squaredLength() {
        return this.x * this.x + this.y * this.y + this.z * this.z;
    }
    
    @Nonnull
    public Vector3d setLength(final double newLen) {
        return this.scale(newLen / this.length());
    }
    
    @Nonnull
    public Vector3d clampLength(final double maxLength) {
        final double length = this.length();
        if (maxLength > length) {
            return this;
        }
        return this.scale(maxLength / length);
    }
    
    @Nonnull
    public Vector3d rotateX(final float angle) {
        final double cos = TrigMathUtil.cos(angle);
        final double sin = TrigMathUtil.sin(angle);
        final double cy = this.y * cos - this.z * sin;
        final double cz = this.y * sin + this.z * cos;
        this.y = cy;
        this.z = cz;
        return this;
    }
    
    @Nonnull
    public Vector3d rotateY(final float angle) {
        final double cos = TrigMathUtil.cos(angle);
        final double sin = TrigMathUtil.sin(angle);
        final double cx = this.x * cos + this.z * sin;
        final double cz = this.x * -sin + this.z * cos;
        this.x = cx;
        this.z = cz;
        return this;
    }
    
    @Nonnull
    public Vector3d rotateZ(final float angle) {
        final double cos = TrigMathUtil.cos(angle);
        final double sin = TrigMathUtil.sin(angle);
        final double cx = this.x * cos - this.y * sin;
        final double cy = this.x * sin + this.y * cos;
        this.x = cx;
        this.y = cy;
        return this;
    }
    
    @Nonnull
    public Vector3d floor() {
        this.x = (double)MathUtil.fastFloor(this.x);
        this.y = (double)MathUtil.fastFloor(this.y);
        this.z = (double)MathUtil.fastFloor(this.z);
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d ceil() {
        this.x = (double)MathUtil.fastCeil(this.x);
        this.y = (double)MathUtil.fastCeil(this.y);
        this.z = (double)MathUtil.fastCeil(this.z);
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d clipToZero(final double epsilon) {
        this.x = MathUtil.clipToZero(this.x, epsilon);
        this.y = MathUtil.clipToZero(this.y, epsilon);
        this.z = MathUtil.clipToZero(this.z, epsilon);
        this.hash = 0;
        return this;
    }
    
    public boolean closeToZero(final double epsilon) {
        return MathUtil.closeToZero(this.x, epsilon) && MathUtil.closeToZero(this.y, epsilon) && MathUtil.closeToZero(this.z, epsilon);
    }
    
    public boolean isInside(final int x, final int y, final int z) {
        final double dx = this.x - x;
        final double dy = this.y - y;
        final double dz = this.z - z;
        return dx >= 0.0 && dx < 1.0 && dy >= 0.0 && dy < 1.0 && dz >= 0.0 && dz < 1.0;
    }
    
    public boolean isFinite() {
        return Double.isFinite(this.x) && Double.isFinite(this.y) && Double.isFinite(this.z);
    }
    
    @Nonnull
    public Vector3d dropHash() {
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3d clone() {
        return new Vector3d(this.x, this.y, this.z);
    }
    
    @Override
    public boolean equals(@Nullable final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || this.getClass() != o.getClass()) {
            return false;
        }
        final Vector3d vector3d = (Vector3d)o;
        return vector3d.x == this.x && vector3d.y == this.y && vector3d.z == this.z;
    }
    
    public boolean equals(@Nullable final Vector3d o) {
        return o != null && o.x == this.x && o.y == this.y && o.z == this.z;
    }
    
    @Override
    public int hashCode() {
        if (this.hash == 0) {
            this.hash = (int)HashUtil.hash(Double.doubleToLongBits(this.x), Double.doubleToLongBits(this.y), Double.doubleToLongBits(this.z));
        }
        return this.hash;
    }
    
    @Nonnull
    @Override
    public String toString() {
        return "Vector3d{x=" + this.x + ", y=" + this.y + ", z=" + this.z;
    }
    
    @Nonnull
    public static Vector3d max(@Nonnull final Vector3d a, @Nonnull final Vector3d b) {
        return new Vector3d(Math.max(a.x, b.x), Math.max(a.y, b.y), Math.max(a.z, b.z));
    }
    
    @Nonnull
    public static Vector3d min(@Nonnull final Vector3d a, @Nonnull final Vector3d b) {
        return new Vector3d(Math.min(a.x, b.x), Math.min(a.y, b.y), Math.min(a.z, b.z));
    }
    
    @Nonnull
    public static Vector3d lerp(@Nonnull final Vector3d a, @Nonnull final Vector3d b, final double t) {
        return lerpUnclamped(a, b, MathUtil.clamp(t, 0.0, 1.0));
    }
    
    @Nonnull
    public static Vector3d lerpUnclamped(@Nonnull final Vector3d a, @Nonnull final Vector3d b, final double t) {
        return new Vector3d(a.x + t * (b.x - a.x), a.y + t * (b.y - a.y), a.z + t * (b.z - a.z));
    }
    
    @Nonnull
    public static Vector3d directionTo(@Nonnull final Vector3d from, @Nonnull final Vector3d to) {
        return to.clone().subtract(from).normalize();
    }
    
    @Nonnull
    public static Vector3d directionTo(@Nonnull final Vector3i from, @Nonnull final Vector3d to) {
        return to.clone().subtract(from).normalize();
    }
    
    @Nonnull
    public static Vector3d add(@Nonnull final Vector3d one, @Nonnull final Vector3d two) {
        return new Vector3d().add(one).add(two);
    }
    
    @Nonnull
    public static Vector3d add(@Nonnull final Vector3d one, @Nonnull final Vector3d two, @Nonnull final Vector3d three) {
        return new Vector3d().add(one).add(two).add(three);
    }
    
    @Nonnull
    public static String formatShortString(@Nullable final Vector3d v) {
        if (v == null) {
            return "";
        }
        return v.x + "/" + v.y + "/" + v.z;
    }
    
    @Nonnull
    public Vector3i toVector3i() {
        return new Vector3i(MathUtil.floor(this.x), MathUtil.floor(this.y), MathUtil.floor(this.z));
    }
    
    @Nonnull
    public Vector3f toVector3f() {
        return new Vector3f((float)this.x, (float)this.y, (float)this.z);
    }
    
    static {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     2: invokedynamic   BootstrapMethod #2, get:()Ljava/util/function/Supplier;
        //     7: invokestatic    com/hypixel/hytale/codec/builder/BuilderCodec.builder:(Ljava/lang/Class;Ljava/util/function/Supplier;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    10: getstatic       com/hypixel/hytale/codec/schema/metadata/ui/UIDisplayMode.COMPACT:Lcom/hypixel/hytale/codec/schema/metadata/ui/UIDisplayMode;
        //    13: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.metadata:(Lcom/hypixel/hytale/codec/schema/metadata/Metadata;)Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //    16: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    19: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    22: dup            
        //    23: ldc             "X"
        //    25: getstatic       com/hypixel/hytale/codec/Codec.DOUBLE:Lcom/hypixel/hytale/codec/codecs/simple/DoubleCodec;
        //    28: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //    31: invokedynamic   BootstrapMethod #3, accept:()Ljava/util/function/BiConsumer;
        //    36: invokedynamic   BootstrapMethod #4, apply:()Ljava/util/function/Function;
        //    41: invokedynamic   BootstrapMethod #5, accept:()Ljava/util/function/BiConsumer;
        //    46: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.appendInherited:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;Ljava/util/function/BiConsumer;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //    49: invokestatic    com/hypixel/hytale/codec/validation/Validators.nonNull:()Lcom/hypixel/hytale/codec/validation/Validator;
        //    52: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.addValidator:(Lcom/hypixel/hytale/codec/validation/Validator;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //    55: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.add:()Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //    58: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //    61: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //    64: dup            
        //    65: ldc             "Y"
        //    67: getstatic       com/hypixel/hytale/codec/Codec.DOUBLE:Lcom/hypixel/hytale/codec/codecs/simple/DoubleCodec;
        //    70: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //    73: invokedynamic   BootstrapMethod #6, accept:()Ljava/util/function/BiConsumer;
        //    78: invokedynamic   BootstrapMethod #7, apply:()Ljava/util/function/Function;
        //    83: invokedynamic   BootstrapMethod #8, accept:()Ljava/util/function/BiConsumer;
        //    88: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.appendInherited:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;Ljava/util/function/BiConsumer;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //    91: invokestatic    com/hypixel/hytale/codec/validation/Validators.nonNull:()Lcom/hypixel/hytale/codec/validation/Validator;
        //    94: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.addValidator:(Lcom/hypixel/hytale/codec/validation/Validator;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //    97: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.add:()Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   100: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   103: new             Lcom/hypixel/hytale/codec/KeyedCodec;
        //   106: dup            
        //   107: ldc             "Z"
        //   109: getstatic       com/hypixel/hytale/codec/Codec.DOUBLE:Lcom/hypixel/hytale/codec/codecs/simple/DoubleCodec;
        //   112: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //   115: invokedynamic   BootstrapMethod #9, accept:()Ljava/util/function/BiConsumer;
        //   120: invokedynamic   BootstrapMethod #10, apply:()Ljava/util/function/Function;
        //   125: invokedynamic   BootstrapMethod #11, accept:()Ljava/util/function/BiConsumer;
        //   130: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.appendInherited:(Lcom/hypixel/hytale/codec/KeyedCodec;Ljava/util/function/BiConsumer;Ljava/util/function/Function;Ljava/util/function/BiConsumer;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //   133: invokestatic    com/hypixel/hytale/codec/validation/Validators.nonNull:()Lcom/hypixel/hytale/codec/validation/Validator;
        //   136: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.addValidator:(Lcom/hypixel/hytale/codec/validation/Validator;)Lcom/hypixel/hytale/codec/builder/BuilderField$FieldBuilder;
        //   139: invokevirtual   com/hypixel/hytale/codec/builder/BuilderField$FieldBuilder.add:()Lcom/hypixel/hytale/codec/builder/BuilderCodec$BuilderBase;
        //   142: checkcast       Lcom/hypixel/hytale/codec/builder/BuilderCodec$Builder;
        //   145: invokevirtual   com/hypixel/hytale/codec/builder/BuilderCodec$Builder.build:()Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   148: putstatic       com/hypixel/hytale/math/vector/Vector3d.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   151: new             Lcom/hypixel/hytale/math/codec/Vector3dArrayCodec;
        //   154: dup            
        //   155: invokespecial   com/hypixel/hytale/math/codec/Vector3dArrayCodec.<init>:()V
        //   158: putstatic       com/hypixel/hytale/math/vector/Vector3d.AS_ARRAY_CODEC:Lcom/hypixel/hytale/math/codec/Vector3dArrayCodec;
        //   161: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   164: dup            
        //   165: dconst_0       
        //   166: dconst_0       
        //   167: dconst_0       
        //   168: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   171: putstatic       com/hypixel/hytale/math/vector/Vector3d.ZERO:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   174: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   177: dup            
        //   178: dconst_0       
        //   179: dconst_1       
        //   180: dconst_0       
        //   181: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   184: putstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   187: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   190: putstatic       com/hypixel/hytale/math/vector/Vector3d.POS_Y:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   193: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   196: dup            
        //   197: dconst_0       
        //   198: ldc2_w          -1.0
        //   201: dconst_0       
        //   202: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   205: putstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   208: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   211: putstatic       com/hypixel/hytale/math/vector/Vector3d.NEG_Y:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   214: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   217: dup            
        //   218: dconst_0       
        //   219: dconst_0       
        //   220: ldc2_w          -1.0
        //   223: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   226: putstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   229: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   232: putstatic       com/hypixel/hytale/math/vector/Vector3d.NEG_Z:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   235: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   238: putstatic       com/hypixel/hytale/math/vector/Vector3d.NORTH:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   241: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   244: dup            
        //   245: dconst_0       
        //   246: dconst_0       
        //   247: dconst_1       
        //   248: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   251: putstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   254: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   257: putstatic       com/hypixel/hytale/math/vector/Vector3d.POS_Z:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   260: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   263: putstatic       com/hypixel/hytale/math/vector/Vector3d.SOUTH:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   266: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   269: dup            
        //   270: dconst_1       
        //   271: dconst_0       
        //   272: dconst_0       
        //   273: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   276: putstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   279: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   282: putstatic       com/hypixel/hytale/math/vector/Vector3d.POS_X:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   285: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   288: putstatic       com/hypixel/hytale/math/vector/Vector3d.EAST:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   291: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   294: dup            
        //   295: ldc2_w          -1.0
        //   298: dconst_0       
        //   299: dconst_0       
        //   300: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   303: putstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   306: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   309: putstatic       com/hypixel/hytale/math/vector/Vector3d.NEG_X:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   312: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   315: putstatic       com/hypixel/hytale/math/vector/Vector3d.WEST:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   318: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   321: dup            
        //   322: dconst_1       
        //   323: dconst_1       
        //   324: dconst_1       
        //   325: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   328: putstatic       com/hypixel/hytale/math/vector/Vector3d.ALL_ONES:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   331: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   334: dup            
        //   335: ldc2_w          -1.7976931348623157E308
        //   338: ldc2_w          -1.7976931348623157E308
        //   341: ldc2_w          -1.7976931348623157E308
        //   344: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   347: putstatic       com/hypixel/hytale/math/vector/Vector3d.MIN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   350: new             Lcom/hypixel/hytale/math/vector/Vector3d;
        //   353: dup            
        //   354: ldc2_w          1.7976931348623157E308
        //   357: ldc2_w          1.7976931348623157E308
        //   360: ldc2_w          1.7976931348623157E308
        //   363: invokespecial   com/hypixel/hytale/math/vector/Vector3d.<init>:(DDD)V
        //   366: putstatic       com/hypixel/hytale/math/vector/Vector3d.MAX:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   369: bipush          6
        //   371: anewarray       Lcom/hypixel/hytale/math/vector/Vector3d;
        //   374: dup            
        //   375: iconst_0       
        //   376: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   379: aastore        
        //   380: dup            
        //   381: iconst_1       
        //   382: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   385: aastore        
        //   386: dup            
        //   387: iconst_2       
        //   388: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   391: aastore        
        //   392: dup            
        //   393: iconst_3       
        //   394: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   397: aastore        
        //   398: dup            
        //   399: iconst_4       
        //   400: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   403: aastore        
        //   404: dup            
        //   405: iconst_5       
        //   406: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   409: aastore        
        //   410: putstatic       com/hypixel/hytale/math/vector/Vector3d.BLOCK_SIDES:[Lcom/hypixel/hytale/math/vector/Vector3d;
        //   413: bipush          12
        //   415: anewarray       Lcom/hypixel/hytale/math/vector/Vector3d;
        //   418: dup            
        //   419: iconst_0       
        //   420: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   423: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   426: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   429: aastore        
        //   430: dup            
        //   431: iconst_1       
        //   432: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   435: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   438: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   441: aastore        
        //   442: dup            
        //   443: iconst_2       
        //   444: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   447: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   450: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   453: aastore        
        //   454: dup            
        //   455: iconst_3       
        //   456: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   459: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   462: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   465: aastore        
        //   466: dup            
        //   467: iconst_4       
        //   468: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   471: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   474: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   477: aastore        
        //   478: dup            
        //   479: iconst_5       
        //   480: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   483: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   486: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   489: aastore        
        //   490: dup            
        //   491: bipush          6
        //   493: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   496: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   499: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   502: aastore        
        //   503: dup            
        //   504: bipush          7
        //   506: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   509: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   512: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   515: aastore        
        //   516: dup            
        //   517: bipush          8
        //   519: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   522: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   525: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   528: aastore        
        //   529: dup            
        //   530: bipush          9
        //   532: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   535: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   538: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   541: aastore        
        //   542: dup            
        //   543: bipush          10
        //   545: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   548: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   551: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   554: aastore        
        //   555: dup            
        //   556: bipush          11
        //   558: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   561: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   564: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   567: aastore        
        //   568: putstatic       com/hypixel/hytale/math/vector/Vector3d.BLOCK_EDGES:[Lcom/hypixel/hytale/math/vector/Vector3d;
        //   571: bipush          8
        //   573: anewarray       Lcom/hypixel/hytale/math/vector/Vector3d;
        //   576: dup            
        //   577: iconst_0       
        //   578: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   581: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   584: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   587: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   590: aastore        
        //   591: dup            
        //   592: iconst_1       
        //   593: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   596: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   599: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   602: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   605: aastore        
        //   606: dup            
        //   607: iconst_2       
        //   608: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   611: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   614: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   617: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   620: aastore        
        //   621: dup            
        //   622: iconst_3       
        //   623: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   626: getstatic       com/hypixel/hytale/math/vector/Vector3d.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   629: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   632: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   635: aastore        
        //   636: dup            
        //   637: iconst_4       
        //   638: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   641: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   644: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   647: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   650: aastore        
        //   651: dup            
        //   652: iconst_5       
        //   653: getstatic       com/hypixel/hytale/math/vector/Vector3d.UP:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   656: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   659: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   662: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   665: aastore        
        //   666: dup            
        //   667: bipush          6
        //   669: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   672: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   675: getstatic       com/hypixel/hytale/math/vector/Vector3d.LEFT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   678: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   681: aastore        
        //   682: dup            
        //   683: bipush          7
        //   685: getstatic       com/hypixel/hytale/math/vector/Vector3d.DOWN:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   688: getstatic       com/hypixel/hytale/math/vector/Vector3d.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   691: getstatic       com/hypixel/hytale/math/vector/Vector3d.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   694: invokestatic    com/hypixel/hytale/math/vector/Vector3d.add:(Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;Lcom/hypixel/hytale/math/vector/Vector3d;)Lcom/hypixel/hytale/math/vector/Vector3d;
        //   697: aastore        
        //   698: putstatic       com/hypixel/hytale/math/vector/Vector3d.BLOCK_CORNERS:[Lcom/hypixel/hytale/math/vector/Vector3d;
        //   701: iconst_3       
        //   702: anewarray       [Lcom/hypixel/hytale/math/vector/Vector3d;
        //   705: dup            
        //   706: iconst_0       
        //   707: getstatic       com/hypixel/hytale/math/vector/Vector3d.BLOCK_SIDES:[Lcom/hypixel/hytale/math/vector/Vector3d;
        //   710: aastore        
        //   711: dup            
        //   712: iconst_1       
        //   713: getstatic       com/hypixel/hytale/math/vector/Vector3d.BLOCK_EDGES:[Lcom/hypixel/hytale/math/vector/Vector3d;
        //   716: aastore        
        //   717: dup            
        //   718: iconst_2       
        //   719: getstatic       com/hypixel/hytale/math/vector/Vector3d.BLOCK_CORNERS:[Lcom/hypixel/hytale/math/vector/Vector3d;
        //   722: aastore        
        //   723: putstatic       com/hypixel/hytale/math/vector/Vector3d.BLOCK_PARTS:[[Lcom/hypixel/hytale/math/vector/Vector3d;
        //   726: iconst_4       
        //   727: anewarray       Lcom/hypixel/hytale/math/vector/Vector3d;
        //   730: dup            
        //   731: iconst_0       
        //   732: getstatic       com/hypixel/hytale/math/vector/Vector3d.NORTH:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   735: aastore        
        //   736: dup            
        //   737: iconst_1       
        //   738: getstatic       com/hypixel/hytale/math/vector/Vector3d.SOUTH:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   741: aastore        
        //   742: dup            
        //   743: iconst_2       
        //   744: getstatic       com/hypixel/hytale/math/vector/Vector3d.EAST:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   747: aastore        
        //   748: dup            
        //   749: iconst_3       
        //   750: getstatic       com/hypixel/hytale/math/vector/Vector3d.WEST:Lcom/hypixel/hytale/math/vector/Vector3d;
        //   753: aastore        
        //   754: putstatic       com/hypixel/hytale/math/vector/Vector3d.CARDINAL_DIRECTIONS:[Lcom/hypixel/hytale/math/vector/Vector3d;
        //   757: return         
        // 
        // The error that occurred was:
        // 
        // java.lang.UnsupportedOperationException: The requested operation is not supported.
        //     at com.strobel.util.ContractUtils.unsupported(ContractUtils.java:27)
        //     at com.strobel.assembler.metadata.TypeReference.getRawType(TypeReference.java:284)
        //     at com.strobel.assembler.metadata.TypeReference.getRawType(TypeReference.java:279)
        //     at com.strobel.assembler.metadata.TypeReference.makeGenericType(TypeReference.java:154)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:225)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:25)
        //     at com.strobel.assembler.metadata.ParameterizedType.accept(ParameterizedType.java:103)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visit(TypeSubstitutionVisitor.java:40)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:211)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitParameterizedType(TypeSubstitutionVisitor.java:25)
        //     at com.strobel.assembler.metadata.ParameterizedType.accept(ParameterizedType.java:103)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visit(TypeSubstitutionVisitor.java:40)
        //     at com.strobel.assembler.metadata.TypeSubstitutionVisitor.visitMethod(TypeSubstitutionVisitor.java:314)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2611)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1510)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:790)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferCall(TypeAnalysis.java:2689)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1040)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:782)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:778)
        //     at com.strobel.decompiler.ast.TypeAnalysis.doInferTypeForExpression(TypeAnalysis.java:1083)
        //     at com.strobel.decompiler.ast.TypeAnalysis.inferTypeForExpression(TypeAnalysis.java:815)
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:684)
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:667)
        //     at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:373)
        //     at com.strobel.decompiler.ast.TypeAnalysis.run(TypeAnalysis.java:95)
        //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:344)
        //     at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:206)
        //     at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:93)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:868)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:761)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:638)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:605)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:195)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:162)
        //     at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:137)
        //     at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71)
        //     at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
        //     at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:333)
        //     at com.strobel.decompiler.DecompilerDriver.decompileJar(DecompilerDriver.java:254)
        //     at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:129)
        // 
        throw new IllegalStateException("An error occurred while decompiling this method.");
    }
}
