Program: 131860
Project: 131860
Buggy source:
private List<OrientEdge> createEdge(final OrientVertex vertex,final Object joinCurrentValue,Object result){
  log(OETLProcessor.LOG_LEVELS.DEBUG,"String_Node_Str",joinCurrentValue,result);
  if (result == null) {
switch (unresolvedLinkAction) {
case CREATE:
      if (joinCurrentValue != null) {
        if (lookup != null) {
          final String[] lookupParts=lookup.split("String_Node_Str");
          final OrientVertex linkedV=pipeline.getGraphDatabase().addTemporaryVertex(lookupParts[0]);
          linkedV.setProperty(lookupParts[1],joinCurrentValue);
          if (targetVertexFields != null) {
            for (            String f : targetVertexFields.fieldNames())             linkedV.setProperty(f,resolve(targetVertexFields.field(f)));
          }
          linkedV.save();
          log(OETLProcessor.LOG_LEVELS.DEBUG,"String_Node_Str",linkedV.getRecord());
          result=linkedV;
        }
 else {
          throw new OConfigurationException("String_Node_Str");
        }
      }
    break;
case ERROR:
  processor.getStats().incrementErrors();
log(OETLProcessor.LOG_LEVELS.ERROR,"String_Node_Str",getName(),joinCurrentValue);
break;
case WARNING:
processor.getStats().incrementWarnings();
log(OETLProcessor.LOG_LEVELS.INFO,"String_Node_Str",getName(),joinCurrentValue);
break;
case SKIP:
return null;
case HALT:
throw new OETLProcessHaltedException("String_Node_Str" + joinCurrentValue + "String_Node_Str");
}
}
if (result != null) {
final List<OrientEdge> edges;
if (OMultiValue.isMultiValue(result)) {
final int size=OMultiValue.getSize(result);
if (size == 0) return null;
edges=new ArrayList<OrientEdge>(size);
}
 else edges=new ArrayList<OrientEdge>(1);
for (Object o : OMultiValue.getMultiValueIterable(result)) {
final OrientVertex targetVertex=pipeline.getGraphDatabase().getVertex(o);
final OrientEdge edge;
if (directionOut) edge=(OrientEdge)vertex.addEdge(edgeClass,targetVertex);
 else edge=(OrientEdge)targetVertex.addEdge(edgeClass,vertex);
if (edgeFields != null) {
for (String f : edgeFields.fieldNames()) edge.setProperty(f,resolve(edgeFields.field(f)));
}
edges.add(edge);
log(OETLProcessor.LOG_LEVELS.DEBUG,"String_Node_Str",edge);
}
return edges;
}
return null;
}

Fixed version (ground truth):
private List<OrientEdge> createEdge(final OrientVertex vertex,final Object joinCurrentValue,Object result){
  log(OETLProcessor.LOG_LEVELS.DEBUG,"String_Node_Str",joinCurrentValue,result);
  if (result == null) {
switch (unresolvedLinkAction) {
case CREATE:
      if (joinCurrentValue != null) {
        if (lookup != null) {
          final String[] lookupParts=lookup.split("String_Node_Str");
          final OrientVertex linkedV=pipeline.getGraphDatabase().addTemporaryVertex(lookupParts[0]);
          linkedV.setProperty(lookupParts[1],joinCurrentValue);
          if (targetVertexFields != null) {
            for (            String f : targetVertexFields.fieldNames())             linkedV.setProperty(f,resolve(targetVertexFields.field(f)));
          }
          linkedV.save();
          log(OETLProcessor.LOG_LEVELS.DEBUG,"String_Node_Str",linkedV.getRecord());
          result=linkedV;
        }
 else {
          throw new OConfigurationException("String_Node_Str");
        }
      }
    break;
case ERROR:
  processor.getStats().incrementErrors();
log(OETLProcessor.LOG_LEVELS.ERROR,"String_Node_Str",getName(),joinCurrentValue);
break;
case WARNING:
processor.getStats().incrementWarnings();
log(OETLProcessor.LOG_LEVELS.INFO,"String_Node_Str",getName(),joinCurrentValue);
break;
case SKIP:
return null;
case HALT:
throw new OETLProcessHaltedException("String_Node_Str" + joinCurrentValue + "String_Node_Str");
}
}
if (result != null) {
final List<OrientEdge> edges;
if (OMultiValue.isMultiValue(result)) {
final int size=OMultiValue.getSize(result);
if (size == 0) return null;
edges=new ArrayList<OrientEdge>(size);
}
 else edges=new ArrayList<OrientEdge>(1);
for (Object o : OMultiValue.getMultiValueIterable(result)) {
final OrientVertex targetVertex=pipeline.getGraphDatabase().getVertex(o);
try {
final OrientEdge edge;
if (directionOut) edge=(OrientEdge)vertex.addEdge(edgeClass,targetVertex);
 else edge=(OrientEdge)targetVertex.addEdge(edgeClass,vertex);
if (edgeFields != null) {
for (String f : edgeFields.fieldNames()) edge.setProperty(f,resolve(edgeFields.field(f)));
}
edges.add(edge);
log(OETLProcessor.LOG_LEVELS.DEBUG,"String_Node_Str",edge);
}
 catch (ORecordDuplicatedException e) {
if (skipDuplicates) {
log(OETLProcessor.LOG_LEVELS.DEBUG,"String_Node_Str");
continue;
}
 else {
log(OETLProcessor.LOG_LEVELS.ERROR,"String_Node_Str");
throw e;
}
}
}
return edges;
}
return null;
}