docs: public static NumberMath getMath(Number left, Number right) {
          // FloatingPointMath wins according to promotion Matrix
          if (isFloatingPoint(left) || isFloatingPoint(right)) {
              return FloatingPointMath.INSTANCE;
          }
          NumberMath leftMath = getMath(left);
          NumberMath rightMath = getMath(right);
  
          if (leftMath == BigDecimalMath.INSTANCE || rightMath == BigDecimalMath.INSTANCE) {
              return BigDecimalMath.INSTANCE;
          }
          if (leftMath == BigIntegerMath.INSTANCE || rightMath == BigIntegerMath.INSTANCE) {
              return BigIntegerMath.INSTANCE;
          }
          if (leftMath == LongMath.INSTANCE || rightMath == LongMath.INSTANCE) {
              return LongMath.INSTANCE;
          }
          if (leftMath == IntegerMath.INSTANCE || rightMath == IntegerMath.INSTANCE) {
              return IntegerMath.INSTANCE;
          }
          // also for custom Number implementations
          return BigDecimalMath.INSTANCE;
      }