code: public Matrix4d translate(double x, double y, double z) {
          if ((properties & PROPERTY_IDENTITY) != 0)
              return translation(x, y, z);
          Matrix4d c = this;
          c.m30 = c.m00 * x + c.m10 * y + c.m20 * z + c.m30;
          c.m31 = c.m01 * x + c.m11 * y + c.m21 * z + c.m31;
          c.m32 = c.m02 * x + c.m12 * y + c.m22 * z + c.m32;
          c.m33 = c.m03 * x + c.m13 * y + c.m23 * z + c.m33;
          c.properties &= ~(PROPERTY_PERSPECTIVE | PROPERTY_IDENTITY);
          return this;
      }
docs: Apply a translation to this matrix by translating by the given number of
  units in x, y and z.
  <p>
  If <code>M</code> is <code>this</code> matrix and <code>T</code> the translation
  matrix, then the new matrix will be <code>M * T</code>. So when
  transforming a vector <code>v</code> with the new matrix by using
  <code>M * T * v</code>, the translation will be applied first!
  <p>
  In order to set the matrix to a translation transformation without post-multiplying
  it, use {@link #translation(double, double, double)}.
  
  @see #translation(double, double, double)
  
  @param x
  the offset to translate in x
  @param y
  the offset to translate in y
  @param z
  the offset to translate in z
  @return this