anchor.diff:  * 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`
   
  
positive.code: | BigInteger
  | double
  | double
  | double
  
  | *int*
  | 
  
negative.code: | BigInteger
  | double
  | double
  | BigDecimal
  
  | *BigInteger*
  | 
  