Program: 90717
Project: 90717
Buggy source:
private Node constructNode(final String name,final Node parent,final JsonNode jsonNode){
  final PluginType type=getPluginManager().getPluginType(name);
  final Node node=new Node(parent,name,type);
  processAttributes(node,jsonNode);
  final Iterator<Map.Entry<String,JsonNode>> iter=jsonNode.getFields();
  final List<Node> children=node.getChildren();
  while (iter.hasNext()) {
    final Map.Entry<String,JsonNode> entry=iter.next();
    final JsonNode n=entry.getValue();
    if (n.isArray() || n.isObject()) {
      if (type == null) {
        status.add(new Status(name,n,ErrorType.CLASS_NOT_FOUND));
      }
      if (n.isArray()) {
        LOGGER.debug("String_Node_Str" + entry.getKey());
        for (int i=0; i < n.size(); ++i) {
          final String pluginType=getType(n.get(i),entry.getKey());
          final PluginType entryType=getPluginManager().getPluginType(pluginType);
          final Node item=new Node(node,entry.getKey(),entryType);
          processAttributes(item,n.get(i));
          if (pluginType.equals(entry.getKey())) {
            LOGGER.debug("String_Node_Str" + entry.getKey() + "String_Node_Str"+ i+ "String_Node_Str");
          }
 else {
            LOGGER.debug("String_Node_Str" + pluginType + "String_Node_Str"+ entry.getKey()+ "String_Node_Str"+ i+ "String_Node_Str");
          }
          final Iterator<Map.Entry<String,JsonNode>> itemIter=n.get(i).getFields();
          final List<Node> itemChildren=item.getChildren();
          while (itemIter.hasNext()) {
            final Map.Entry<String,JsonNode> itemEntry=itemIter.next();
            if (itemEntry.getValue().isObject()) {
              LOGGER.debug("String_Node_Str" + itemEntry.getKey());
              itemChildren.add(constructNode(itemEntry.getKey(),item,itemEntry.getValue()));
            }
          }
          children.add(item);
        }
      }
 else {
        LOGGER.debug("String_Node_Str" + entry.getKey());
        children.add(constructNode(entry.getKey(),node,n));
      }
    }
  }
  String t;
  if (type == null) {
    t="String_Node_Str";
  }
 else {
    t=type.getElementName() + "String_Node_Str" + type.getPluginClass();
  }
  final String p=node.getParent() == null ? "String_Node_Str" : node.getParent().getName() == null ? "String_Node_Str" : node.getParent().getName();
  LOGGER.debug("String_Node_Str" + node.getName() + "String_Node_Str"+ p+ "String_Node_Str"+ t);
  return node;
}

Fixed version (ground truth):
private Node constructNode(final String name,final Node parent,final JsonNode jsonNode){
  final PluginType<?> type=getPluginManager().getPluginType(name);
  final Node node=new Node(parent,name,type);
  processAttributes(node,jsonNode);
  final Iterator<Map.Entry<String,JsonNode>> iter=jsonNode.getFields();
  final List<Node> children=node.getChildren();
  while (iter.hasNext()) {
    final Map.Entry<String,JsonNode> entry=iter.next();
    final JsonNode n=entry.getValue();
    if (n.isArray() || n.isObject()) {
      if (type == null) {
        status.add(new Status(name,n,ErrorType.CLASS_NOT_FOUND));
      }
      if (n.isArray()) {
        LOGGER.debug("String_Node_Str" + entry.getKey());
        for (int i=0; i < n.size(); ++i) {
          final String pluginType=getType(n.get(i),entry.getKey());
          final PluginType<?> entryType=getPluginManager().getPluginType(pluginType);
          final Node item=new Node(node,entry.getKey(),entryType);
          processAttributes(item,n.get(i));
          if (pluginType.equals(entry.getKey())) {
            LOGGER.debug("String_Node_Str" + entry.getKey() + "String_Node_Str"+ i+ "String_Node_Str");
          }
 else {
            LOGGER.debug("String_Node_Str" + pluginType + "String_Node_Str"+ entry.getKey()+ "String_Node_Str"+ i+ "String_Node_Str");
          }
          final Iterator<Map.Entry<String,JsonNode>> itemIter=n.get(i).getFields();
          final List<Node> itemChildren=item.getChildren();
          while (itemIter.hasNext()) {
            final Map.Entry<String,JsonNode> itemEntry=itemIter.next();
            if (itemEntry.getValue().isObject()) {
              LOGGER.debug("String_Node_Str" + itemEntry.getKey());
              itemChildren.add(constructNode(itemEntry.getKey(),item,itemEntry.getValue()));
            }
          }
          children.add(item);
        }
      }
 else {
        LOGGER.debug("String_Node_Str" + entry.getKey());
        children.add(constructNode(entry.getKey(),node,n));
      }
    }
  }
  String t;
  if (type == null) {
    t="String_Node_Str";
  }
 else {
    t=type.getElementName() + "String_Node_Str" + type.getPluginClass();
  }
  final String p=node.getParent() == null ? "String_Node_Str" : node.getParent().getName() == null ? "String_Node_Str" : node.getParent().getName();
  LOGGER.debug("String_Node_Str" + node.getName() + "String_Node_Str"+ p+ "String_Node_Str"+ t);
  return node;
}