anchor.diff:  | BigInteger
   | double
   | double
  -| double
  +| BigDecimal
   
   | *char*
   | 
  
positive.code: | BigInteger
  | double
  | double
  | double
  
  | *int*
  | 
  
negative.code: * binary operations between `byte`, `char`, `short` and `int` result in `int`
  * binary operations involving `long` with `byte`, `char`, `short` and `int` result in `long`
  * binary operations involving `BigInteger` and any other integral type result in `BigInteger`
  * binary operations involving `BigDecimal` with `byte`, `char`, `short`, `int` and `BigInteger` result in `BigDecimal`
  * binary operations between `float`, `double` and `BigDecimal` result in `double`
  * binary operations between two `BigDecimal` result in `BigDecimal`
  
  