Program: 54473
Project: 54473
Buggy source:
@Override public FilterList deserialize(JsonParser jp,DeserializationContext ctxt) throws IOException, JsonProcessingException {
  FilterList filterList=new FilterList();
  JsonNode node=jp.getCodec().readTree(jp);
  if (node instanceof ObjectNode) {
    Iterator<Entry<String,JsonNode>> databaseEntriesIterator=node.fields();
    while (databaseEntriesIterator.hasNext()) {
      Entry<String,JsonNode> databaseEntry=databaseEntriesIterator.next();
      try {
        Map<String,List<IndexFilter>> collections=new HashMap<>();
        if (databaseEntry.getValue() instanceof ObjectNode) {
          readCollectionObject(jp,(ObjectNode)databaseEntry.getValue(),collections);
        }
 else         if (databaseEntry.getValue() instanceof ArrayNode) {
          ArrayNode collectionsArray=(ArrayNode)databaseEntry.getValue();
          Iterator<JsonNode> collectionsIterator=collectionsArray.elements();
          int position=0;
          while (collectionsIterator.hasNext()) {
            try {
              JsonNode collection=collectionsIterator.next();
              if (collection instanceof ObjectNode) {
                readCollectionObject(jp,(ObjectNode)collection,collections);
              }
 else               if (collection instanceof ArrayNode) {
                throw new JsonMappingException("String_Node_Str",jp.getCurrentLocation());
              }
 else {
                collections.put(collection.asText(),new ArrayList<>());
              }
              position++;
            }
 catch (            Exception e) {
              throw JsonMappingException.wrapWithPath(e,collections,position);
            }
          }
        }
        filterList.put(databaseEntry.getKey(),collections);
      }
 catch (      Exception e) {
        throw JsonMappingException.wrapWithPath(e,filterList,databaseEntry.getKey());
      }
    }
  }
 else {
    throw new JsonMappingException("String_Node_Str",jp.getCurrentLocation());
  }
  return filterList;
}

Fixed version (ground truth):
@Override @SuppressFBWarnings("String_Node_Str") public FilterList deserialize(JsonParser jp,DeserializationContext ctxt) throws IOException, JsonProcessingException {
  FilterList filterList=new FilterList();
  JsonNode node=jp.getCodec().readTree(jp);
  if (node instanceof ObjectNode) {
    Iterator<Entry<String,JsonNode>> databaseEntriesIterator=node.fields();
    while (databaseEntriesIterator.hasNext()) {
      Entry<String,JsonNode> databaseEntry=databaseEntriesIterator.next();
      try {
        Map<String,List<IndexFilter>> collections=new HashMap<>();
        if (databaseEntry.getValue() instanceof ObjectNode) {
          readCollectionObject(jp,(ObjectNode)databaseEntry.getValue(),collections);
        }
 else         if (databaseEntry.getValue() instanceof ArrayNode) {
          ArrayNode collectionsArray=(ArrayNode)databaseEntry.getValue();
          Iterator<JsonNode> collectionsIterator=collectionsArray.elements();
          int position=0;
          while (collectionsIterator.hasNext()) {
            try {
              JsonNode collection=collectionsIterator.next();
              if (collection instanceof ObjectNode) {
                readCollectionObject(jp,(ObjectNode)collection,collections);
              }
 else               if (collection instanceof ArrayNode) {
                throw new JsonMappingException("String_Node_Str",jp.getCurrentLocation());
              }
 else {
                collections.put(collection.asText(),new ArrayList<>());
              }
              position++;
            }
 catch (            Exception e) {
              throw JsonMappingException.wrapWithPath(e,collections,position);
            }
          }
        }
        filterList.put(databaseEntry.getKey(),collections);
      }
 catch (      Exception e) {
        throw JsonMappingException.wrapWithPath(e,filterList,databaseEntry.getKey());
      }
    }
  }
 else {
    throw new JsonMappingException("String_Node_Str",jp.getCurrentLocation());
  }
  return filterList;
}