code: public Matrix3x2d mul(Matrix3x2dc right, Matrix3x2d dest) {
          double nm00 = m00 * right.m00() + m10 * right.m01();
          double nm01 = m01 * right.m00() + m11 * right.m01();
          double nm10 = m00 * right.m10() + m10 * right.m11();
          double nm11 = m01 * right.m10() + m11 * right.m11();
          double nm20 = m00 * right.m20() + m10 * right.m21() + m20;
          double nm21 = m01 * right.m20() + m11 * right.m21() + m21;
          dest.m00 = nm00;
          dest.m01 = nm01;
          dest.m10 = nm10;
          dest.m11 = nm11;
          dest.m20 = nm20;
          dest.m21 = nm21;
          return dest;
      }
docs: Multiply this matrix by the supplied <code>right</code> matrix by assuming a third row in
  both matrices of <code>(0, 0, 1)</code> and store the result in <code>dest</code>.
  <p>
  If <code>M</code> is <code>this</code> matrix and <code>R</code> the <code>right</code> matrix,
  then the new matrix will be <code>M * R</code>. So when transforming a
  vector <code>v</code> with the new matrix by using <code>M * R * v</code>, the
  transformation of the right matrix will be applied first!
  
  @param right
  the right operand of the matrix multiplication
  @param dest
  will hold the result
  @return dest