code: @Pure
  	public Transform2D createInverse() {
  		final double det = this.m00 * this.m11 - this.m01 * this.m10;
  		if (MathUtil.isEpsilonZero(det)) {
  			throw new SingularMatrixException(Locale.getString("E1", det)); //$NON-NLS-1$
  		}
  		return new Transform2D(
  				this.m11 / det,
  				-this.m01 / det,
  				(this.m01 * this.m12 - this.m11 * this.m02) / det,
  				-this.m10 / det,
  				this.m00 / det,
  				(this.m10 * this.m02 - this.m00 * this.m12) / det);
  	}
docs: Returns an <code>Transform2D</code> object representing the
  inverse transformation.
  The inverse transform Tx' of this transform Tx
  maps coordinates transformed by Tx back
  to their original coordinates.
  In other words, Tx'(Tx(p)) = p = Tx(Tx'(p)).
  
  <p>If this transform maps all coordinates onto a point or a line
  then it will not have an inverse, since coordinates that do
  not lie on the destination point or line will not have an inverse
  mapping.
  The <code>determinant</code> method can be used to determine if this
  transform has no inverse, in which case an exception will be
  thrown if the <code>createInverse</code> method is called.
  @return a new <code>Transform2D</code> object representing the
  inverse transformation.
  @see #determinant()
  @throws SingularMatrixException if the matrix cannot be inverted.