### Question:
Rotation extends AAngularMeasure implements IRotation { @Override public IRotation subtract(final IAngularMeasure angle) { return subtract(angle.asRad()); } private  Rotation(); private  Rotation(double rad); static Rotation zero(); static Rotation ofRad(double rad); static Rotation ofDeg(double deg); static Rotation ofRotation(double turns); static Rotation ofVec(IVector2 vector); static Rotation ofAngularMeasure(IAngularMeasure angularMeasure); @Override IRotation add(final IAngularMeasure angle); @Override IRotation add(final double angle); @Override IRotation subtract(final IAngularMeasure angle); @Override IRotation subtract(final double angle); @Override IRotation multiply(final double factor);  }### Answer:
@Test public void subtract() { assertEquals(-2 * Math.PI, Rotation.zero().subtract(Math.PI / 2).subtract(Rotation.ofDeg(270)).asRad(), ACCURACY); assertEquals(-3, Rotation.zero().subtract(Rotation.ofDeg(1)).subtract(Rotation.ofDeg(2)).asDeg(), ACCURACY); }