Program: 190131
Project: 190131
Buggy source:
private void updateEdges(HierarchicalGraph graph){
  Modeler edgeInit=engine.getModelClasses()[AbstractEngine.CLASS_EDGE].getCurrentModeler();
  Modeler arrowInit=engine.getModelClasses()[AbstractEngine.CLASS_ARROW].getCurrentModeler();
  EdgeIterable edgeIterable;
  edgeIterable=graph.getEdges();
  float minWeight=Float.POSITIVE_INFINITY;
  float maxWeight=Float.NEGATIVE_INFINITY;
  for (  Edge edge : edgeIterable) {
    if (edge.getSource().getNodeData().getModel() == null || edge.getTarget().getNodeData().getModel() == null) {
      continue;
    }
    minWeight=Math.min(minWeight,edge.getWeight());
    maxWeight=Math.max(maxWeight,edge.getWeight());
    Model obj=edge.getEdgeData().getModel();
    if (obj == null) {
      obj=edgeInit.initModel(edge.getEdgeData());
      engine.addObject(AbstractEngine.CLASS_EDGE,(ModelImpl)obj);
      if (!undirected && vizConfig.isShowArrows() && !edge.isSelfLoop()) {
        ModelImpl arrowObj=arrowInit.initModel(edge.getEdgeData());
        engine.addObject(AbstractEngine.CLASS_ARROW,arrowObj);
        arrowObj.setCacheMarker(cacheMarker);
        ((Edge2dModel)obj).setArrow(arrowObj);
      }
    }
 else     if (!obj.isValid()) {
      engine.addObject(AbstractEngine.CLASS_EDGE,(ModelImpl)obj);
      if (!undirected && vizConfig.isShowArrows() && !edge.isSelfLoop()) {
        ModelImpl arrowObj=((Edge2dModel)obj).getArrow();
        engine.addObject(AbstractEngine.CLASS_ARROW,arrowObj);
        arrowObj.setCacheMarker(cacheMarker);
      }
    }
 else {
      if (!undirected && vizConfig.isShowArrows() && !edge.isSelfLoop()) {
        ModelImpl arrowObj=((Edge2dModel)obj).getArrow();
        arrowObj.setCacheMarker(cacheMarker);
      }
    }
    obj.setCacheMarker(cacheMarker);
  }
  limits.setMinWeight(minWeight);
  limits.setMaxWeight(maxWeight);
}

Fixed version (ground truth):
private void updateEdges(HierarchicalGraph graph){
  Modeler edgeInit=engine.getModelClasses()[AbstractEngine.CLASS_EDGE].getCurrentModeler();
  Modeler arrowInit=engine.getModelClasses()[AbstractEngine.CLASS_ARROW].getCurrentModeler();
  EdgeIterable edgeIterable;
  edgeIterable=graph.getEdges();
  float minWeight=Float.POSITIVE_INFINITY;
  float maxWeight=Float.NEGATIVE_INFINITY;
  for (  Edge edge : edgeIterable) {
    if (edge.getSource().getNodeData().getModel() == null || edge.getTarget().getNodeData().getModel() == null) {
      continue;
    }
    minWeight=Math.min(minWeight,edge.getWeight());
    maxWeight=Math.max(maxWeight,edge.getWeight());
    Model obj=edge.getEdgeData().getModel();
    if (obj == null) {
      obj=edgeInit.initModel(edge.getEdgeData());
      engine.addObject(AbstractEngine.CLASS_EDGE,(ModelImpl)obj);
      if (!undirected && vizConfig.isShowArrows() && !edge.isSelfLoop()) {
        ModelImpl arrowObj=arrowInit.initModel(edge.getEdgeData());
        engine.addObject(AbstractEngine.CLASS_ARROW,arrowObj);
        arrowObj.setCacheMarker(cacheMarker);
        ((Edge2dModel)obj).setArrow(arrowObj);
      }
    }
 else     if (!obj.isValid()) {
      engine.addObject(AbstractEngine.CLASS_EDGE,(ModelImpl)obj);
      if (!undirected && vizConfig.isShowArrows() && !edge.isSelfLoop()) {
        ModelImpl arrowObj=((Edge2dModel)obj).getArrow();
        engine.addObject(AbstractEngine.CLASS_ARROW,arrowObj);
        arrowObj.setCacheMarker(cacheMarker);
      }
    }
 else {
      if (!undirected && vizConfig.isShowArrows() && !edge.isSelfLoop()&& edge.isDirected()) {
        ModelImpl arrowObj=((Edge2dModel)obj).getArrow();
        arrowObj.setCacheMarker(cacheMarker);
      }
    }
    obj.setCacheMarker(cacheMarker);
  }
  limits.setMinWeight(minWeight);
  limits.setMaxWeight(maxWeight);
}