Program: 50991
Project: 50991
Buggy source:
public static Workflow parseYAML(File yamlFile) throws IOException {
  Workflow.WorkflowBuilder builder=Workflow.builder();
  BufferedInputStream bis=new BufferedInputStream(new FileInputStream(yamlFile));
  Map<?,?> loadMap=(Map<?,?>)yaml.load(bis);
  Map<?,?> workflowMap=(Map<?,?>)loadMap.get("String_Node_Str");
  ArrayList<Map<?,?>> modules=(ArrayList<Map<?,?>>)workflowMap.get("String_Node_Str");
  String workflowName=(String)workflowMap.get("String_Node_Str");
  builder.name(workflowName);
  for (  Map m : modules) {
    Map module=(Map)m.get("String_Node_Str");
    String name=(String)module.get("String_Node_Str");
    String source=(String)module.get("String_Node_Str");
    Domain domain;
    String domainPrefix, sourceTail;
    if (!source.contains("String_Node_Str")) {
      domain=Global.defaultDomain();
      domainPrefix="String_Node_Str";
      sourceTail=source;
    }
 else {
      domainPrefix=source.split("String_Node_Str")[0];
      sourceTail=source.split("String_Node_Str",2)[1];
      if (!Global.domainExists(domainPrefix))       throw new RuntimeException("String_Node_Str" + domainPrefix + "String_Node_Str");
      domain=Global.domain(name);
    }
    builder.module(name,domain);
    builder.source(name,sourceTail);
    Map inputMap=(Map)module.get("String_Node_Str");
    for (    Object inputKey : inputMap.keySet()) {
      String inputName=inputKey.toString();
      if (inputMap.get(inputKey) instanceof Map) {
        Map ref=(Map)inputMap.get(inputKey);
        String referenceString=(String)ref.get("String_Node_Str");
        String referencedModule=referenceString.split("String_Node_Str")[0];
        String referencedOutput=referenceString.split("String_Node_Str")[1];
        DataType inputType=domain.inputType(sourceTail,inputName);
        String description=domain.inputDescription(sourceTail,inputName);
        builder.refInput(name,inputName,description,referencedModule,referencedOutput,inputType);
      }
 else {
        Object value=inputMap.get(inputKey);
        DataType dataType=domain.inputType(sourceTail,inputName);
        String description=domain.inputDescription(sourceTail,inputName);
        if (domain.valueMatches(value,dataType))         builder.rawInput(name,inputName,description,value,domain.inputType(sourceTail,inputName));
 else         if ((value instanceof List<?>) && listItemsMatch((List<Object>)value,dataType,domain))         builder.multiInput(name,inputName,description,(List<Object>)value,dataType);
 else         throw new InconsistentWorkflowException("String_Node_Str" + name + "String_Node_Str"+ inputName+ "String_Node_Str"+ value+ "String_Node_Str"+ dataType+ "String_Node_Str");
      }
    }
    Map<String,DataType> outputTypeMap=getOutputTypes(source,domain);
    for (    String outputName : outputTypeMap.keySet()) {
      String description=domain.outputDescription(sourceTail,outputName);
      builder.output(name,outputName,description,outputTypeMap.get(outputName));
    }
  }
  return builder.workflow();
}

Fixed version (ground truth):
public static Workflow parseYAML(File yamlFile) throws IOException {
  Workflow.WorkflowBuilder builder=Workflow.builder();
  BufferedInputStream bis=new BufferedInputStream(new FileInputStream(yamlFile));
  Map<?,?> loadMap=(Map<?,?>)yaml.load(bis);
  Map<?,?> workflowMap=(Map<?,?>)loadMap.get("String_Node_Str");
  ArrayList<Map<?,?>> modules=(ArrayList<Map<?,?>>)workflowMap.get("String_Node_Str");
  String workflowName=(String)workflowMap.get("String_Node_Str");
  builder.name(workflowName);
  for (  Map m : modules) {
    Map module=(Map)m.get("String_Node_Str");
    String name=(String)module.get("String_Node_Str");
    String source=(String)module.get("String_Node_Str");
    Domain domain;
    String domainPrefix, sourceTail;
    if (!source.contains("String_Node_Str")) {
      domain=Global.defaultDomain();
      domainPrefix="String_Node_Str";
      sourceTail=source;
    }
 else {
      domainPrefix=source.split("String_Node_Str")[0];
      sourceTail=source.split("String_Node_Str",2)[1];
      if (!Global.domainExists(domainPrefix))       throw new RuntimeException("String_Node_Str" + domainPrefix + "String_Node_Str");
      domain=Global.domain(name);
    }
    builder.module(name,domain);
    builder.source(name,sourceTail);
    Map inputMap=(Map)module.get("String_Node_Str");
    for (    Object inputKey : inputMap.keySet()) {
      String inputName=inputKey.toString();
      if (inputMap.get(inputKey) instanceof Map) {
        Map ref=(Map)inputMap.get(inputKey);
        String referenceString=(String)ref.get("String_Node_Str");
        String referencedModule=referenceString.split("String_Node_Str")[0];
        String referencedOutput=referenceString.split("String_Node_Str")[1];
        DataType inputType=domain.inputType(sourceTail,inputName);
        String description=domain.inputDescription(sourceTail,inputName);
        builder.refInput(name,inputName,description,referencedModule,referencedOutput,inputType);
      }
 else {
        Object value=inputMap.get(inputKey);
        DataType dataType=domain.inputType(sourceTail,inputName);
        String description=domain.inputDescription(sourceTail,inputName);
        if (domain.valueMatches(value,dataType))         builder.rawInput(name,inputName,description,value,domain.inputType(sourceTail,inputName));
 else         if ((value instanceof List<?>) && listItemsMatch((List<Object>)value,dataType,domain))         builder.multiInput(name,description,inputName,(List<Object>)value,dataType);
 else         throw new InconsistentWorkflowException("String_Node_Str" + name + "String_Node_Str"+ inputName+ "String_Node_Str"+ value+ "String_Node_Str"+ dataType+ "String_Node_Str");
      }
    }
    Map<String,DataType> outputTypeMap=getOutputTypes(source,domain);
    for (    String outputName : outputTypeMap.keySet()) {
      String description=domain.outputDescription(sourceTail,outputName);
      builder.output(name,outputName,description,outputTypeMap.get(outputName));
    }
  }
  return builder.workflow();
}