class Aer implements Comparable<Aer> {

  public Aer add(final Aer other) {
    assertNotNull(other, "Other is null");
    assertNotEquals(Aer.EMPTY, this, "Cannot add to Aer.EMPTY");
    assertNotEquals(Aer.EMPTY, other, "Cannot add with Aer.EMPTY");
    if (null == this.value) {
      return other;
    }
    if (null == other.value) {
      return this;
    }
    return new Aer(this.value.add(other.value));
  }

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

}