Program: 180474
Project: 180474
Buggy source:
private void addEventsToGraph(Document networkDoc){
  if (networkDoc.getRootElement().getName().equals("String_Node_Str")) {
    int edgeCounter=fullGraph.getEdgeCount();
    Element networkElem=networkDoc.getRootElement();
    Element logElem=networkElem.getChild("String_Node_Str");
    if (logElem != null) {
      taskChanged(logElem.getChildren().size(),"String_Node_Str");
      for (      Object o : logElem.getChildren()) {
        Element event=(Element)o;
        String type=event.getAttribute("String_Node_Str").getValue();
        if (type.equals("String_Node_Str") || type.equals("String_Node_Str")) {
          continue;
        }
        long timeDifference=Integer.parseInt(event.getChildText("String_Node_Str"));
        int paramOne=Integer.parseInt(event.getChildText("String_Node_Str"));
        int paramTwo=0;
        int paramThree=0;
        if (LogEvent.typeHasParamTwo(type)) {
          paramTwo=Integer.parseInt(event.getChildText("String_Node_Str"));
        }
        if (LogEvent.typeHasParamThree(type)) {
          paramThree=Integer.parseInt(event.getChildText("String_Node_Str"));
        }
        LogEvent evt=new LogEvent(timeDifference,type,paramOne,paramTwo,paramThree);
        if (evt.isConstructing()) {
          if (evt.getType().equals("String_Node_Str")) {
            fullGraph.addVertex(new PeerVertex(evt.getParam(1)));
          }
 else           if (evt.getType().equals("String_Node_Str")) {
            P2PVertex from=fullGraph.getVertexInGraph(new PeerVertex(evt.getParam(1)));
            P2PVertex to=fullGraph.getVertexInGraph(new PeerVertex(evt.getParam(2)));
            if (fullGraph.findEdge(to,from) == null) {
              P2PConnection edgeOne=new P2PConnection(P2PConnection.P2P,edgeCounter);
              edgeCounter++;
              P2PConnection edgeTwo=new P2PConnection(P2PConnection.P2P,edgeCounter);
              edgeCounter++;
              fullGraph.addEdge(edgeOne,from,to);
              fullGraph.addEdge(edgeTwo,to,from);
            }
          }
 else           if (evt.getType().equals("String_Node_Str")) {
            P2PVertex document=new DocumentVertex(evt.getParam(2));
            P2PVertex peerDocument=new PeerDocumentVertex(evt.getParam(1),evt.getParam(2));
            P2PVertex peer=fullGraph.getVertexInGraph(new PeerVertex(evt.getParam(1)));
            if (!fullGraph.containsVertex(document)) {
              fullGraph.addVertex(document);
            }
 else {
              document=fullGraph.getVertexInGraph(document);
            }
            fullGraph.addVertex(peerDocument);
            if (fullGraph.findEdge(peer,document) == null) {
              fullGraph.addEdge(new P2PConnection(P2PConnection.P2DOC,edgeCounter),peer,document);
              edgeCounter++;
            }
            if (fullGraph.findEdge(peer,peerDocument) == null) {
              fullGraph.addEdge(new P2PConnection(P2PConnection.P2PDOC,edgeCounter),peer,peerDocument);
              edgeCounter++;
            }
            if (fullGraph.findEdge(peerDocument,document) == null) {
              fullGraph.addEdge(new P2PConnection(P2PConnection.DOC2PDOC,edgeCounter),peerDocument,document);
              edgeCounter++;
            }
          }
 else           if (evt.getType().equals("String_Node_Str")) {
            P2PVertex documentOne=fullGraph.getVertexInGraph(new DocumentVertex(evt.getParam(1)));
            P2PVertex documentTwo=fullGraph.getVertexInGraph(new DocumentVertex(evt.getParam(2)));
            if (fullGraph.findEdge(documentOne,documentTwo) == null) {
              fullGraph.addEdge(new P2PConnection(P2PConnection.DOC2DOC,edgeCounter),documentOne,documentTwo);
              edgeCounter++;
            }
          }
        }
        logList.add(evt);
      }
    }
  }
}

Fixed version (ground truth):
private void addEventsToGraph(Document networkDoc,long timeOffset){
  if (networkDoc.getRootElement().getName().equals("String_Node_Str")) {
    int edgeCounter=fullGraph.getEdgeCount();
    Element networkElem=networkDoc.getRootElement();
    Element logElem=networkElem.getChild("String_Node_Str");
    if (logElem != null) {
      taskChanged(logElem.getChildren().size(),"String_Node_Str");
      for (      Object o : logElem.getChildren()) {
        Element event=(Element)o;
        String type=event.getAttribute("String_Node_Str").getValue();
        if (type.equals("String_Node_Str") || type.equals("String_Node_Str")) {
          continue;
        }
        long timeDifference=Integer.parseInt(event.getChildText("String_Node_Str"));
        long eventTime=timeDifference + timeOffset;
        int paramOne=Integer.parseInt(event.getChildText("String_Node_Str"));
        int paramTwo=0;
        int paramThree=0;
        if (LogEvent.typeHasParamTwo(type)) {
          paramTwo=Integer.parseInt(event.getChildText("String_Node_Str"));
        }
        if (LogEvent.typeHasParamThree(type)) {
          paramThree=Integer.parseInt(event.getChildText("String_Node_Str"));
        }
        LogEvent evt=new LogEvent(eventTime,type,paramOne,paramTwo,paramThree);
        if (evt.isConstructing()) {
          if (evt.getType().equals("String_Node_Str")) {
            fullGraph.addVertex(new PeerVertex(evt.getParam(1)));
          }
 else           if (evt.getType().equals("String_Node_Str")) {
            P2PVertex from=fullGraph.getVertexInGraph(new PeerVertex(evt.getParam(1)));
            P2PVertex to=fullGraph.getVertexInGraph(new PeerVertex(evt.getParam(2)));
            if (fullGraph.findEdge(to,from) == null) {
              P2PConnection edgeOne=new P2PConnection(P2PConnection.P2P,edgeCounter);
              edgeCounter++;
              P2PConnection edgeTwo=new P2PConnection(P2PConnection.P2P,edgeCounter);
              edgeCounter++;
              fullGraph.addEdge(edgeOne,from,to);
              fullGraph.addEdge(edgeTwo,to,from);
            }
          }
 else           if (evt.getType().equals("String_Node_Str")) {
            P2PVertex document=new DocumentVertex(evt.getParam(2));
            P2PVertex peerDocument=new PeerDocumentVertex(evt.getParam(1),evt.getParam(2));
            P2PVertex peer=fullGraph.getVertexInGraph(new PeerVertex(evt.getParam(1)));
            if (!fullGraph.containsVertex(document)) {
              fullGraph.addVertex(document);
            }
 else {
              document=fullGraph.getVertexInGraph(document);
            }
            fullGraph.addVertex(peerDocument);
            if (fullGraph.findEdge(peer,document) == null) {
              fullGraph.addEdge(new P2PConnection(P2PConnection.P2DOC,edgeCounter),peer,document);
              edgeCounter++;
            }
            if (fullGraph.findEdge(peer,peerDocument) == null) {
              fullGraph.addEdge(new P2PConnection(P2PConnection.P2PDOC,edgeCounter),peer,peerDocument);
              edgeCounter++;
            }
            if (fullGraph.findEdge(peerDocument,document) == null) {
              fullGraph.addEdge(new P2PConnection(P2PConnection.DOC2PDOC,edgeCounter),peerDocument,document);
              edgeCounter++;
            }
          }
 else           if (evt.getType().equals("String_Node_Str")) {
            P2PVertex documentOne=fullGraph.getVertexInGraph(new DocumentVertex(evt.getParam(1)));
            P2PVertex documentTwo=fullGraph.getVertexInGraph(new DocumentVertex(evt.getParam(2)));
            if (fullGraph.findEdge(documentOne,documentTwo) == null) {
              fullGraph.addEdge(new P2PConnection(P2PConnection.DOC2DOC,edgeCounter),documentOne,documentTwo);
              edgeCounter++;
            }
          }
        }
        logList.add(evt);
      }
    }
  }
}