class NpmUntypedObjectDeserializerSerializer extends UntypedObjectDeserializerSerializer {

  @Override
  @Nullable
  public Object deserialize(final JsonParser parser, final DeserializationContext context) throws IOException {
    String fieldName = parser.getCurrentName();

    for (NpmFieldMatcher matcher : matchers) {
      if (matcher.matches(parser) && matcher.allowDeserializationOnMatched()) {
        // first matcher wins
        return matcher.getDeserializer().deserialize(fieldName, defaultValueDeserialize(parser, context), parser, context, generator);
      }
    }

    return defaultDeserialize(fieldName, parser, context);
  }

  public  NpmUntypedObjectDeserializerSerializer(final JsonGenerator generator,
                                                final List<NpmFieldMatcher> matchers);

}