// Path: src/org/joml/jre/java/io/Externalizable.java
// public interface Externalizable extends java.io.Serializable {
//     void writeExternal(ObjectOutput out) throws IOException;
//     void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
// }
// 
// Path: src/org/joml/jre/java/io/ObjectInput.java
// public interface ObjectInput extends DataOutput {
// 
//     double readDouble() throws IOException;
//     float readFloat() throws IOException;
//     int readInt() throws IOException;
// 
// }
// 
// Path: src/org/joml/jre/java/io/ObjectOutput.java
// public interface ObjectOutput extends DataOutput {
//     void writeObject(Object obj);
// }
// 
// Path: src/org/joml/jre/java/text/DecimalFormat.java
// public class DecimalFormat extends NumberFormat {
// 
//     public DecimalFormat() {
//     }
//     public DecimalFormat(String pattern) {
//     }
//     public DecimalFormat (String pattern, DecimalFormatSymbols symbols) {
//     }
// 
//     public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
//         return null;
//     }
//     public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
//         return null;
//     }
//     public Number parse(String source, ParsePosition parsePosition) {
//         return null;
//     }
//     public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) {
//         return null;
//     }
//     public Object parseObject(String source, ParsePosition pos) {
//         return null;
//     }
// 
// }
// 
// Path: src/org/joml/jre/java/text/NumberFormat.java
// public abstract class NumberFormat extends Format {
//     public final String format(double number) {
//         return Double.toString(number);
//     }
//     public final String format(long number) {
//         return Long.toString(number);
//     }
// }


import java.nio.FloatBuffer;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.nio.ByteBuffer;
import java.nio.DoubleBuffer;
    }

    public Vector3f transform(Vector3f v) {
        return v.mul(this);
    }

    public Vector3f transform(Vector3fc v, Vector3f dest) {
        return v.mul(this, dest);
    }

    public Vector3d transform(double x, double y, double z, Vector3d dest) {
        return dest.set(Math.fma(m00, x, Math.fma(m10, y, m20 * z)),
                        Math.fma(m01, x, Math.fma(m11, y, m21 * z)),
                        Math.fma(m02, x, Math.fma(m12, y, m22 * z)));
    }

    public Vector3d transformTranspose(Vector3d v) {
        return v.mulTranspose(this);
    }

    public Vector3d transformTranspose(Vector3dc v, Vector3d dest) {
        return v.mulTranspose(this, dest);
    }

    public Vector3d transformTranspose(double x, double y, double z, Vector3d dest) {
        return dest.set(Math.fma(m00, x, Math.fma(m01, y, m02 * z)),
                        Math.fma(m10, x, Math.fma(m11, y, m12 * z)),
                        Math.fma(m20, x, Math.fma(m21, y, m22 * z)));
    }

// Path: src/org/joml/jre/java/io/Externalizable.java
// public interface Externalizable extends java.io.Serializable {
//     void writeExternal(ObjectOutput out) throws IOException;
//     void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
// }
// 
// Path: src/org/joml/jre/java/io/ObjectInput.java
// public interface ObjectInput extends DataOutput {
// 
//     double readDouble() throws IOException;
//     float readFloat() throws IOException;
//     int readInt() throws IOException;
// 
// }
// 
// Path: src/org/joml/jre/java/io/ObjectOutput.java
// public interface ObjectOutput extends DataOutput {
//     void writeObject(Object obj);
// }
// 
// Path: src/org/joml/jre/java/text/DecimalFormat.java
// public class DecimalFormat extends NumberFormat {
// 
//     public DecimalFormat() {
//     }
//     public DecimalFormat(String pattern) {
//     }
//     public DecimalFormat (String pattern, DecimalFormatSymbols symbols) {
//     }
// 
//     public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
//         return null;
//     }
//     public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
//         return null;
//     }
//     public Number parse(String source, ParsePosition parsePosition) {
//         return null;
//     }
//     public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) {
//         return null;
//     }
//     public Object parseObject(String source, ParsePosition pos) {
//         return null;
//     }
// 
// }
// 
// Path: src/org/joml/jre/java/text/NumberFormat.java
// public abstract class NumberFormat extends Format {
//     public final String format(double number) {
//         return Double.toString(number);
//     }
//     public final String format(long number) {
//         return Long.toString(number);
//     }
// }


// Path: src/org/joml/Matrix3d.java
import java.nio.FloatBuffer;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.nio.ByteBuffer;
import java.nio.DoubleBuffer;

    }

    public Vector3f transform(Vector3f v) {
        return v.mul(this);
    }

    public Vector3f transform(Vector3fc v, Vector3f dest) {
        return v.mul(this, dest);
    }

    public Vector3d transform(double x, double y, double z, Vector3d dest) {
        return dest.set(Math.fma(m00, x, Math.fma(m10, y, m20 * z)),
                        Math.fma(m01, x, Math.fma(m11, y, m21 * z)),
                        Math.fma(m02, x, Math.fma(m12, y, m22 * z)));
    }

    public Vector3d transformTranspose(Vector3d v) {
        return v.mulTranspose(this);
    }

    public Vector3d transformTranspose(Vector3dc v, Vector3d dest) {
        return v.mulTranspose(this, dest);
    }

    public Vector3d transformTranspose(double x, double y, double z, Vector3d dest) {
        return dest.set(Math.fma(m00, x, Math.fma(m01, y, m02 * z)),
                        Math.fma(m10, x, Math.fma(m11, y, m12 * z)),
                        Math.fma(m20, x, Math.fma(m21, y, m22 * z)));
    }

    public void writeExternal(ObjectOutput out) throws IOException {