class Aer implements Comparable<Aer> {

  public Aer subtract(final Aer other) {
    assertNotNull(other, "Other is null");
    assertNotEquals(Aer.EMPTY, this, "Cannot subtract to Aer.EMPTY");
    assertNotEquals(Aer.EMPTY, other, "Cannot add with Aer.EMPTY");
    final BigInteger subtracted = this.value.subtract(other.value);
    return new Aer(subtracted.compareTo(BigInteger.ZERO) < 0 ? BigInteger.ZERO : subtracted);
  }

  public  Aer(final String amount);
  public  Aer(final String amount, final Unit unit);
  public  Aer(final BigInteger amount);
  protected  Aer();

}