// 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.text.DecimalFormat;
import java.text.NumberFormat;
import com.google.gwt.typedarrays.shared.Float32Array;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
    public Vector2f transformDirection(Vector2fc v, Vector2f dest) {
        dest.set(m00 * v.x() + m10 * v.y(),
                 m01 * v.x() + m11 * v.y());
        return dest;
    }

    /**
     * Transform/multiply the given 2D-vector <code>(x, y)</code>, as if it was a 3D-vector with z=0, by
     * this matrix and store the result in <code>dest</code>.
     * <p>
     * The given 2D-vector is treated as a 3D-vector with its z-component being <code>0.0</code>, so it
     * will represent a direction in 2D-space rather than a position. This method will therefore
     * not take the translation part of the matrix into account.
     * <p>
     * In order to store the result in the same vector, use {@link #transformDirection(Vector2f)}.
     * 
     * @see #transformDirection(Vector2f)
     * 
     * @param x
     *          the x component of the vector to transform
     * @param y
     *          the y component of the vector to transform
     * @param dest
     *          will hold the result
     * @return dest
     */
    public Vector2f transformDirection(float x, float y, Vector2f dest) {
        return dest.set(m00 * x + m10 * y, m01 * x + m11 * y);
    }

// 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/Matrix3x2f.java
import java.text.DecimalFormat;
import java.text.NumberFormat;
import com.google.gwt.typedarrays.shared.Float32Array;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;

    public Vector2f transformDirection(Vector2fc v, Vector2f dest) {
        dest.set(m00 * v.x() + m10 * v.y(),
                 m01 * v.x() + m11 * v.y());
        return dest;
    }

    /**
     * Transform/multiply the given 2D-vector <code>(x, y)</code>, as if it was a 3D-vector with z=0, by
     * this matrix and store the result in <code>dest</code>.
     * <p>
     * The given 2D-vector is treated as a 3D-vector with its z-component being <code>0.0</code>, so it
     * will represent a direction in 2D-space rather than a position. This method will therefore
     * not take the translation part of the matrix into account.
     * <p>
     * In order to store the result in the same vector, use {@link #transformDirection(Vector2f)}.
     * 
     * @see #transformDirection(Vector2f)
     * 
     * @param x
     *          the x component of the vector to transform
     * @param y
     *          the y component of the vector to transform
     * @param dest
     *          will hold the result
     * @return dest
     */
    public Vector2f transformDirection(float x, float y, Vector2f dest) {
        return dest.set(m00 * x + m10 * y, m01 * x + m11 * y);
    }

    public void writeExternal(ObjectOutput out) throws IOException {