// 
// 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 javax.annotation.Nonnull;
import com.hypixel.hytale.codec.builder.BuilderCodec;

public class Vector3l
{
    @Nonnull
    public static final BuilderCodec<Vector3l> CODEC;
    public static final Vector3l ZERO;
    public static final Vector3l UP;
    public static final Vector3l POS_Y;
    public static final Vector3l DOWN;
    public static final Vector3l NEG_Y;
    public static final Vector3l FORWARD;
    public static final Vector3l NEG_Z;
    public static final Vector3l NORTH;
    public static final Vector3l BACKWARD;
    public static final Vector3l POS_Z;
    public static final Vector3l SOUTH;
    public static final Vector3l RIGHT;
    public static final Vector3l POS_X;
    public static final Vector3l EAST;
    public static final Vector3l LEFT;
    public static final Vector3l NEG_X;
    public static final Vector3l WEST;
    public static final Vector3l ALL_ONES;
    public static final Vector3l MIN;
    public static final Vector3l MAX;
    public static final Vector3l[] BLOCK_SIDES;
    public static final Vector3l[] BLOCK_EDGES;
    public static final Vector3l[] BLOCK_CORNERS;
    public static final Vector3l[][] BLOCK_PARTS;
    public static final Vector3l[] CARDINAL_DIRECTIONS;
    public long x;
    public long y;
    public long z;
    private transient int hash;
    
    public Vector3l() {
        this(0L, 0L, 0L);
    }
    
    public Vector3l(@Nonnull final Vector3l v) {
        this(v.x, v.y, v.z);
    }
    
    public Vector3l(final long x, final long y, final long z) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.hash = 0;
    }
    
    public long getX() {
        return this.x;
    }
    
    public void setX(final long x) {
        this.x = x;
        this.hash = 0;
    }
    
    public long getY() {
        return this.y;
    }
    
    public void setY(final long y) {
        this.y = y;
        this.hash = 0;
    }
    
    public long getZ() {
        return this.z;
    }
    
    public void setZ(final long z) {
        this.z = z;
        this.hash = 0;
    }
    
    @Nonnull
    public Vector3l assign(@Nonnull final Vector3l v) {
        this.x = v.x;
        this.y = v.y;
        this.z = v.z;
        this.hash = v.hash;
        return this;
    }
    
    @Nonnull
    public Vector3l assign(final long v) {
        this.x = v;
        this.y = v;
        this.z = v;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l assign(@Nonnull final long[] v) {
        this.x = v[0];
        this.y = v[1];
        this.z = v[2];
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l assign(final long x, final long y, final long z) {
        this.x = x;
        this.y = y;
        this.z = z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l add(@Nonnull final Vector3l v) {
        this.x += v.x;
        this.y += v.y;
        this.z += v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l add(final long x, final long y, final long z) {
        this.x += x;
        this.y += y;
        this.z += z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l addScaled(@Nonnull final Vector3l v, final long s) {
        this.x += v.x * s;
        this.y += v.y * s;
        this.z += v.z * s;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l subtract(@Nonnull final Vector3l v) {
        this.x -= v.x;
        this.y -= v.y;
        this.z -= v.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l subtract(final long x, final long y, final long z) {
        this.x -= x;
        this.y -= y;
        this.z -= z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l negate() {
        this.x = -this.x;
        this.y = -this.y;
        this.z = -this.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l scale(final long s) {
        this.x *= s;
        this.y *= s;
        this.z *= s;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l scale(final double s) {
        this.x *= (long)s;
        this.y *= (long)s;
        this.z *= (long)s;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l scale(@Nonnull final Vector3l p) {
        this.x *= p.x;
        this.y *= p.y;
        this.z *= p.z;
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l cross(@Nonnull final Vector3l v) {
        final long x0 = this.y * v.z - this.z * v.y;
        final long y0 = this.z * v.x - this.x * v.z;
        final long z0 = this.x * v.y - this.y * v.x;
        return new Vector3l(x0, y0, z0);
    }
    
    @Nonnull
    public Vector3l cross(@Nonnull final Vector3l v, @Nonnull final Vector3l 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 long dot(@Nonnull final Vector3l other) {
        return this.x * other.x + this.y * other.y + this.z * other.z;
    }
    
    public double distanceTo(@Nonnull final Vector3l v) {
        return Math.sqrt((double)this.distanceSquaredTo(v));
    }
    
    public double distanceTo(final long x, final long y, final long z) {
        return Math.sqrt((double)this.distanceSquaredTo(x, y, z));
    }
    
    public long distanceSquaredTo(@Nonnull final Vector3l v) {
        final long x0 = v.x - this.x;
        final long y0 = v.y - this.y;
        final long z0 = v.z - this.z;
        return x0 * x0 + y0 * y0 + z0 * z0;
    }
    
    public long distanceSquaredTo(final long x, final long y, final long z) {
        final long dx = x - this.x;
        final long dy = y - this.y;
        final long dz = z - this.z;
        return dx * dx + dy * dy + dz * dz;
    }
    
    @Nonnull
    public Vector3l normalize() {
        return this.setLength(1L);
    }
    
    public double length() {
        return Math.sqrt((double)this.squaredLength());
    }
    
    public long squaredLength() {
        return this.x * this.x + this.y * this.y + this.z * this.z;
    }
    
    @Nonnull
    public Vector3l setLength(final long newLen) {
        return this.scale(newLen / this.length());
    }
    
    @Nonnull
    public Vector3l clampLength(final long maxLength) {
        final double length = this.length();
        if (maxLength > length) {
            return this;
        }
        return this.scale(maxLength / length);
    }
    
    @Nonnull
    public Vector3l dropHash() {
        this.hash = 0;
        return this;
    }
    
    @Nonnull
    public Vector3l clone() {
        return new Vector3l(this.x, this.y, this.z);
    }
    
    @Nonnull
    public Vector3i toVector3i() {
        return new Vector3i(MathUtil.floor((double)this.x), MathUtil.floor((double)this.y), MathUtil.floor((double)this.z));
    }
    
    @Nonnull
    public Vector3d toVector3d() {
        return new Vector3d((double)this.x, (double)this.y, (double)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 Vector3l vector3l = (Vector3l)o;
        return vector3l.x == this.x && vector3l.y == this.y && vector3l.z == this.z;
    }
    
    @Override
    public int hashCode() {
        if (this.hash == 0) {
            this.hash = (int)HashUtil.hash(this.x, this.y, this.z);
        }
        return this.hash;
    }
    
    @Nonnull
    @Override
    public String toString() {
        return "Vector3l{x=" + this.x + ", y=" + this.y + ", z=" + this.z;
    }
    
    @Nonnull
    public static Vector3l max(@Nonnull final Vector3l a, @Nonnull final Vector3l b) {
        return new Vector3l(Math.max(a.x, b.x), Math.max(a.y, b.y), Math.max(a.z, b.z));
    }
    
    @Nonnull
    public static Vector3l min(@Nonnull final Vector3l a, @Nonnull final Vector3l b) {
        return new Vector3l(Math.min(a.x, b.x), Math.min(a.y, b.y), Math.min(a.z, b.z));
    }
    
    @Nonnull
    public static Vector3l directionTo(@Nonnull final Vector3l from, @Nonnull final Vector3l to) {
        return to.clone().subtract(from).normalize();
    }
    
    @Nonnull
    public static Vector3l add(@Nonnull final Vector3l one, @Nonnull final Vector3l two) {
        return new Vector3l().add(one).add(two);
    }
    
    @Nonnull
    public static Vector3l add(@Nonnull final Vector3l one, @Nonnull final Vector3l two, @Nonnull final Vector3l three) {
        return new Vector3l().add(one).add(two).add(three);
    }
    
    static {
        // 
        // This method could not be decompiled.
        // 
        // Original Bytecode:
        // 
        //     2: invokedynamic   BootstrapMethod #1, 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.LONG:Lcom/hypixel/hytale/codec/codecs/simple/LongCodec;
        //    28: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //    31: invokedynamic   BootstrapMethod #2, accept:()Ljava/util/function/BiConsumer;
        //    36: invokedynamic   BootstrapMethod #3, apply:()Ljava/util/function/Function;
        //    41: invokedynamic   BootstrapMethod #4, 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.LONG:Lcom/hypixel/hytale/codec/codecs/simple/LongCodec;
        //    70: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //    73: invokedynamic   BootstrapMethod #5, accept:()Ljava/util/function/BiConsumer;
        //    78: invokedynamic   BootstrapMethod #6, apply:()Ljava/util/function/Function;
        //    83: invokedynamic   BootstrapMethod #7, 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.LONG:Lcom/hypixel/hytale/codec/codecs/simple/LongCodec;
        //   112: invokespecial   com/hypixel/hytale/codec/KeyedCodec.<init>:(Ljava/lang/String;Lcom/hypixel/hytale/codec/Codec;)V
        //   115: invokedynamic   BootstrapMethod #8, accept:()Ljava/util/function/BiConsumer;
        //   120: invokedynamic   BootstrapMethod #9, apply:()Ljava/util/function/Function;
        //   125: invokedynamic   BootstrapMethod #10, 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/Vector3l.CODEC:Lcom/hypixel/hytale/codec/builder/BuilderCodec;
        //   151: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   154: dup            
        //   155: lconst_0       
        //   156: lconst_0       
        //   157: lconst_0       
        //   158: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   161: putstatic       com/hypixel/hytale/math/vector/Vector3l.ZERO:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   164: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   167: dup            
        //   168: lconst_0       
        //   169: lconst_1       
        //   170: lconst_0       
        //   171: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   174: putstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   177: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   180: putstatic       com/hypixel/hytale/math/vector/Vector3l.POS_Y:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   183: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   186: dup            
        //   187: lconst_0       
        //   188: ldc2_w          -1
        //   191: lconst_0       
        //   192: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   195: putstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   198: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   201: putstatic       com/hypixel/hytale/math/vector/Vector3l.NEG_Y:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   204: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   207: dup            
        //   208: lconst_0       
        //   209: lconst_0       
        //   210: ldc2_w          -1
        //   213: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   216: putstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   219: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   222: putstatic       com/hypixel/hytale/math/vector/Vector3l.NEG_Z:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   225: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   228: putstatic       com/hypixel/hytale/math/vector/Vector3l.NORTH:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   231: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   234: dup            
        //   235: lconst_0       
        //   236: lconst_0       
        //   237: lconst_1       
        //   238: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   241: putstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   244: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   247: putstatic       com/hypixel/hytale/math/vector/Vector3l.POS_Z:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   250: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   253: putstatic       com/hypixel/hytale/math/vector/Vector3l.SOUTH:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   256: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   259: dup            
        //   260: lconst_1       
        //   261: lconst_0       
        //   262: lconst_0       
        //   263: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   266: putstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   269: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   272: putstatic       com/hypixel/hytale/math/vector/Vector3l.POS_X:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   275: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   278: putstatic       com/hypixel/hytale/math/vector/Vector3l.EAST:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   281: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   284: dup            
        //   285: ldc2_w          -1
        //   288: lconst_0       
        //   289: lconst_0       
        //   290: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   293: putstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   296: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   299: putstatic       com/hypixel/hytale/math/vector/Vector3l.NEG_X:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   302: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   305: putstatic       com/hypixel/hytale/math/vector/Vector3l.WEST:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   308: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   311: dup            
        //   312: lconst_1       
        //   313: lconst_1       
        //   314: lconst_1       
        //   315: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   318: putstatic       com/hypixel/hytale/math/vector/Vector3l.ALL_ONES:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   321: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   324: dup            
        //   325: ldc2_w          -9223372036854775808
        //   328: ldc2_w          -9223372036854775808
        //   331: ldc2_w          -9223372036854775808
        //   334: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   337: putstatic       com/hypixel/hytale/math/vector/Vector3l.MIN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   340: new             Lcom/hypixel/hytale/math/vector/Vector3l;
        //   343: dup            
        //   344: ldc2_w          9223372036854775807
        //   347: ldc2_w          9223372036854775807
        //   350: ldc2_w          9223372036854775807
        //   353: invokespecial   com/hypixel/hytale/math/vector/Vector3l.<init>:(JJJ)V
        //   356: putstatic       com/hypixel/hytale/math/vector/Vector3l.MAX:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   359: bipush          6
        //   361: anewarray       Lcom/hypixel/hytale/math/vector/Vector3l;
        //   364: dup            
        //   365: iconst_0       
        //   366: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   369: aastore        
        //   370: dup            
        //   371: iconst_1       
        //   372: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   375: aastore        
        //   376: dup            
        //   377: iconst_2       
        //   378: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   381: aastore        
        //   382: dup            
        //   383: iconst_3       
        //   384: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   387: aastore        
        //   388: dup            
        //   389: iconst_4       
        //   390: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   393: aastore        
        //   394: dup            
        //   395: iconst_5       
        //   396: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   399: aastore        
        //   400: putstatic       com/hypixel/hytale/math/vector/Vector3l.BLOCK_SIDES:[Lcom/hypixel/hytale/math/vector/Vector3l;
        //   403: bipush          12
        //   405: anewarray       Lcom/hypixel/hytale/math/vector/Vector3l;
        //   408: dup            
        //   409: iconst_0       
        //   410: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   413: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   416: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   419: aastore        
        //   420: dup            
        //   421: iconst_1       
        //   422: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   425: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   428: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   431: aastore        
        //   432: dup            
        //   433: iconst_2       
        //   434: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   437: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   440: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   443: aastore        
        //   444: dup            
        //   445: iconst_3       
        //   446: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   449: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   452: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   455: aastore        
        //   456: dup            
        //   457: iconst_4       
        //   458: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   461: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   464: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   467: aastore        
        //   468: dup            
        //   469: iconst_5       
        //   470: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   473: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   476: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   479: aastore        
        //   480: dup            
        //   481: bipush          6
        //   483: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   486: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   489: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   492: aastore        
        //   493: dup            
        //   494: bipush          7
        //   496: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   499: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   502: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   505: aastore        
        //   506: dup            
        //   507: bipush          8
        //   509: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   512: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   515: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   518: aastore        
        //   519: dup            
        //   520: bipush          9
        //   522: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   525: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   528: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   531: aastore        
        //   532: dup            
        //   533: bipush          10
        //   535: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   538: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   541: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   544: aastore        
        //   545: dup            
        //   546: bipush          11
        //   548: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   551: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   554: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   557: aastore        
        //   558: putstatic       com/hypixel/hytale/math/vector/Vector3l.BLOCK_EDGES:[Lcom/hypixel/hytale/math/vector/Vector3l;
        //   561: bipush          8
        //   563: anewarray       Lcom/hypixel/hytale/math/vector/Vector3l;
        //   566: dup            
        //   567: iconst_0       
        //   568: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   571: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   574: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   577: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   580: aastore        
        //   581: dup            
        //   582: iconst_1       
        //   583: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   586: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   589: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   592: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   595: aastore        
        //   596: dup            
        //   597: iconst_2       
        //   598: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   601: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   604: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   607: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   610: aastore        
        //   611: dup            
        //   612: iconst_3       
        //   613: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   616: getstatic       com/hypixel/hytale/math/vector/Vector3l.FORWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   619: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   622: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   625: aastore        
        //   626: dup            
        //   627: iconst_4       
        //   628: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   631: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   634: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   637: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   640: aastore        
        //   641: dup            
        //   642: iconst_5       
        //   643: getstatic       com/hypixel/hytale/math/vector/Vector3l.UP:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   646: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   649: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   652: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   655: aastore        
        //   656: dup            
        //   657: bipush          6
        //   659: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   662: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   665: getstatic       com/hypixel/hytale/math/vector/Vector3l.LEFT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   668: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   671: aastore        
        //   672: dup            
        //   673: bipush          7
        //   675: getstatic       com/hypixel/hytale/math/vector/Vector3l.DOWN:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   678: getstatic       com/hypixel/hytale/math/vector/Vector3l.BACKWARD:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   681: getstatic       com/hypixel/hytale/math/vector/Vector3l.RIGHT:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   684: invokestatic    com/hypixel/hytale/math/vector/Vector3l.add:(Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;Lcom/hypixel/hytale/math/vector/Vector3l;)Lcom/hypixel/hytale/math/vector/Vector3l;
        //   687: aastore        
        //   688: putstatic       com/hypixel/hytale/math/vector/Vector3l.BLOCK_CORNERS:[Lcom/hypixel/hytale/math/vector/Vector3l;
        //   691: iconst_3       
        //   692: anewarray       [Lcom/hypixel/hytale/math/vector/Vector3l;
        //   695: dup            
        //   696: iconst_0       
        //   697: getstatic       com/hypixel/hytale/math/vector/Vector3l.BLOCK_SIDES:[Lcom/hypixel/hytale/math/vector/Vector3l;
        //   700: aastore        
        //   701: dup            
        //   702: iconst_1       
        //   703: getstatic       com/hypixel/hytale/math/vector/Vector3l.BLOCK_EDGES:[Lcom/hypixel/hytale/math/vector/Vector3l;
        //   706: aastore        
        //   707: dup            
        //   708: iconst_2       
        //   709: getstatic       com/hypixel/hytale/math/vector/Vector3l.BLOCK_CORNERS:[Lcom/hypixel/hytale/math/vector/Vector3l;
        //   712: aastore        
        //   713: putstatic       com/hypixel/hytale/math/vector/Vector3l.BLOCK_PARTS:[[Lcom/hypixel/hytale/math/vector/Vector3l;
        //   716: iconst_4       
        //   717: anewarray       Lcom/hypixel/hytale/math/vector/Vector3l;
        //   720: dup            
        //   721: iconst_0       
        //   722: getstatic       com/hypixel/hytale/math/vector/Vector3l.NORTH:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   725: aastore        
        //   726: dup            
        //   727: iconst_1       
        //   728: getstatic       com/hypixel/hytale/math/vector/Vector3l.SOUTH:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   731: aastore        
        //   732: dup            
        //   733: iconst_2       
        //   734: getstatic       com/hypixel/hytale/math/vector/Vector3l.EAST:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   737: aastore        
        //   738: dup            
        //   739: iconst_3       
        //   740: getstatic       com/hypixel/hytale/math/vector/Vector3l.WEST:Lcom/hypixel/hytale/math/vector/Vector3l;
        //   743: aastore        
        //   744: putstatic       com/hypixel/hytale/math/vector/Vector3l.CARDINAL_DIRECTIONS:[Lcom/hypixel/hytale/math/vector/Vector3l;
        //   747: 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.");
    }
}
