public void testGetArgumentConversionPrice() {
    // Unknown number types:
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(RationalNumber.class, Integer.class));
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, RationalNumber.class));
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(RationalNumber.class, Float.class));
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(Float.class, RationalNumber.class));
    assertEquals(
        0,
        OverloadedNumberUtil.getArgumentConversionPrice(
            RationalNumber.class, RationalNumber.class));

    // Fully check some rows (not all of them; the code is generated anyways):

    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Byte.class));
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Short.class));
    assertEquals(0, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Integer.class));
    assertEquals(10004, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Long.class));
    assertEquals(
        10005, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, BigInteger.class));
    assertEquals(
        30006, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Float.class));
    assertEquals(
        20007, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, Double.class));
    assertEquals(
        20008, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, BigDecimal.class));

    assertEquals(
        45001, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Byte.class));
    assertEquals(
        44002, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Short.class));
    assertEquals(
        41003, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Integer.class));
    assertEquals(
        41004, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Long.class));
    assertEquals(
        40005, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, BigInteger.class));
    assertEquals(
        33006, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Float.class));
    assertEquals(
        32007, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, Double.class));
    assertEquals(
        0, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, BigDecimal.class));

    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrLong.class, Byte.class));
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrLong.class, Short.class));
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrLong.class, Integer.class));
    assertEquals(
        21004,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrLong.class, Long.class));
    assertEquals(
        21005,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrLong.class, BigInteger.class));
    assertEquals(
        40006,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrLong.class, Float.class));
    assertEquals(
        0,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrLong.class, Double.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrLong.class, BigDecimal.class));

    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrDouble.class, Byte.class));
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrDouble.class, Short.class));
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrDouble.class, Integer.class));
    assertEquals(
        Integer.MAX_VALUE,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrDouble.class, Long.class));
    assertEquals(
        0,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrDouble.class, BigInteger.class));
    assertEquals(
        40006,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrDouble.class, Float.class));
    assertEquals(
        20007,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrDouble.class, Double.class));
    assertEquals(
        10008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrDouble.class, BigDecimal.class));

    // Check if all fromC is present:
    assertEquals(
        20008, OverloadedNumberUtil.getArgumentConversionPrice(Byte.class, BigDecimal.class));
    assertEquals(
        20008, OverloadedNumberUtil.getArgumentConversionPrice(Short.class, BigDecimal.class));
    assertEquals(
        20008, OverloadedNumberUtil.getArgumentConversionPrice(Integer.class, BigDecimal.class));
    assertEquals(
        20008, OverloadedNumberUtil.getArgumentConversionPrice(Long.class, BigDecimal.class));
    assertEquals(
        10008, OverloadedNumberUtil.getArgumentConversionPrice(BigInteger.class, BigDecimal.class));
    assertEquals(
        20008, OverloadedNumberUtil.getArgumentConversionPrice(Float.class, BigDecimal.class));
    assertEquals(
        20008, OverloadedNumberUtil.getArgumentConversionPrice(Double.class, BigDecimal.class));
    assertEquals(
        0, OverloadedNumberUtil.getArgumentConversionPrice(BigDecimal.class, BigDecimal.class));
    assertEquals(
        0,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.IntegerBigDecimal.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrFloat.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.FloatOrByte.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrShort.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.FloatOrByte.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.FloatOrShort.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.FloatOrInteger.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrByte.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrIntegerOrFloat.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrInteger.class, BigDecimal.class));
    assertEquals(
        20008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.DoubleOrLong.class, BigDecimal.class));
    assertEquals(
        10008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrByte.class, BigDecimal.class));
    assertEquals(
        10008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrShort.class, BigDecimal.class));
    assertEquals(
        10008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrInteger.class, BigDecimal.class));
    assertEquals(
        10008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrLong.class, BigDecimal.class));
    assertEquals(
        10008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrFloat.class, BigDecimal.class));
    assertEquals(
        10008,
        OverloadedNumberUtil.getArgumentConversionPrice(
            OverloadedNumberUtil.BigIntegerOrDouble.class, BigDecimal.class));
  }