docs: protected final static int getConversionFnid(int authoritative_type, int new_type) {
          if (new_type == authoritative_type) return 0;
          switch (new_type) {
              case AS_TYPE.null_value:
                  assert( authoritative_type == AS_TYPE.string_value );
                  return from_string_conversion[AS_TYPE.null_value];
              case AS_TYPE.boolean_value:
                  assert( authoritative_type == AS_TYPE.string_value );
                  return from_string_conversion[AS_TYPE.boolean_value];
              case AS_TYPE.int_value:
                  return to_int_conversion[authoritative_type];
              case AS_TYPE.long_value:
                  return to_long_conversion[authoritative_type];
              case AS_TYPE.bigInteger_value:
                  return to_bigInteger_conversion[authoritative_type];
              case AS_TYPE.decimal_value:
                  return to_decimal_conversion[authoritative_type];
              case AS_TYPE.double_value:
                  return to_double_conversion[authoritative_type];
              case AS_TYPE.string_value:
                  return to_string_conversions[authoritative_type];
              case AS_TYPE.date_value:
                  assert( authoritative_type == AS_TYPE.timestamp_value );
                  return FNID_FROM_TIMESTAMP_TO_DATE;
              case AS_TYPE.timestamp_value:
                  assert( authoritative_type == AS_TYPE.date_value );
                  return FNID_FROM_DATE_TO_TIMESTAMP;
          }
          String message = "can't convert from "
                         + getValueTypeName(authoritative_type)
                         + " to "
                         + getValueTypeName(new_type);
          throw new CantConvertException(message);
      }