docs: private Object readKey(
            FieldDescriptor field,
            JsonParser parser,
            DeserializationContext context
    ) throws IOException {
      if (parser.getCurrentToken() != JsonToken.FIELD_NAME) {
        throw reportWrongToken(JsonToken.FIELD_NAME, context, "Expected FIELD_NAME token");
      }
  
      String fieldName = parser.getCurrentName();
      switch (field.getJavaType()) {
        case INT:
          // lifted from StdDeserializer since there's no method to call
          try {
            return NumberInput.parseInt(fieldName.trim());
          } catch (IllegalArgumentException iae) {
            Number number = (Number) context.handleWeirdStringValue(
                    _valueClass,
                    fieldName.trim(),
                    "not a valid int value"
            );
            return number == null ? 0 : number.intValue();
          }
        case LONG:
          // lifted from StdDeserializer since there's no method to call
          try {
            return NumberInput.parseLong(fieldName.trim());
          } catch (IllegalArgumentException iae) {
            Number number = (Number) context.handleWeirdStringValue(
                    _valueClass,
                    fieldName.trim(),
                    "not a valid long value"
            );
            return number == null ? 0L : number.longValue();
          }
        case BOOLEAN:
          // lifted from StdDeserializer since there's no method to call
          String text = fieldName.trim();
          if ("true".equals(text) || "True".equals(text)) {
            return true;
          }
          if ("false".equals(text) || "False".equals(text)) {
            return false;
          }
          Boolean b = (Boolean) context.handleWeirdStringValue(
                  _valueClass,
                  text,
                  "only \"true\" or \"false\" recognized"
          );
          return Boolean.TRUE.equals(b);
        case STRING:
          return fieldName;
        case ENUM:
          EnumValueDescriptor enumValueDescriptor = field.getEnumType().findValueByName(parser.getText());
  
          if (enumValueDescriptor == null && !ignorableEnum(parser.getText().trim(), context)) {
            throw context.weirdStringException(parser.getText(), field.getEnumType().getClass(),
                    "value not one of declared Enum instance names");
          }
  
          return enumValueDescriptor;
        default:
          throw new IllegalArgumentException("Unexpected map key type: " + field.getJavaType());
      }
    }