Program: 52300
Project: 52300
Buggy source:
public void addBody(Body body) throws SAXException, WingException, UIException, SQLException, IOException, AuthorizeException {
  Item item=submission.getItem();
  Collection collection=submission.getCollection();
  String actionURL=IdentifierService.getURL(collection).toString() + "String_Node_Str";
  DCInputSet inputSet=null;
  DCInput[] inputs={};
  try {
    inputSet=getInputsReader().getInputs(IdentifierService.getCanonicalForm(submission.getCollection()));
    inputs=inputSet.getPageRows(getPage() - 1,submission.hasMultipleTitles(),submission.isPublishedBefore());
  }
 catch (  ServletException se) {
    throw new UIException(se);
  }
  Division div=body.addInteractiveDivision("String_Node_Str",actionURL,Division.METHOD_POST,"String_Node_Str");
  div.setHead(T_submission_head);
  addSubmissionProgressList(div);
  List form=div.addList("String_Node_Str",List.TYPE_FORM);
  form.setHead(T_head);
  for (  DCInput dcInput : inputs) {
    if (!dcInput.isVisible(submissionInfo.isInWorkflow() ? WORKFLOW_SCOPE : SUBMISSION_SCOPE))     continue;
    String schema=dcInput.getSchema();
    String element=dcInput.getElement();
    String qualifier=dcInput.getQualifier();
    DCValue[] dcValues=item.getMetadata(schema,element,qualifier,Item.ANY);
    String fieldName=FlowUtils.getFieldName(dcInput);
    String inputType=dcInput.getInputType();
    if (inputType.equals("String_Node_Str")) {
      renderNameField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderDateField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderSeriesField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderOneboxField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      DCValue[] unfiltered=item.getMetadata(dcInput.getSchema(),dcInput.getElement(),Item.ANY,Item.ANY);
      ArrayList<DCValue> filtered=new ArrayList<DCValue>();
      for (      DCValue dcValue : unfiltered) {
        String unfilteredFieldName=dcValue.element + "String_Node_Str" + dcValue.qualifier;
        if (!inputSet.isFieldPresent(unfilteredFieldName)) {
          filtered.add(dcValue);
        }
      }
      renderQualdropField(form,fieldName,dcInput,filtered.toArray(new DCValue[filtered.size()]));
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderTextArea(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderDropdownField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderSelectFromListField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderOneboxField(form,fieldName,dcInput,dcValues);
    }
 else {
      form.addItem(T_unknown_field);
    }
  }
  div.addHidden("String_Node_Str").setValue(knot.getId());
  addControlButtons(form);
}

Fixed version (ground truth):
public void addBody(Body body) throws SAXException, WingException, UIException, SQLException, IOException, AuthorizeException {
  Item item=submission.getItem();
  Collection collection=submission.getCollection();
  String actionURL=IdentifierService.getURL(collection).toString() + "String_Node_Str" + knot.getId()+ "String_Node_Str";
  DCInputSet inputSet=null;
  DCInput[] inputs={};
  try {
    inputSet=getInputsReader().getInputs(IdentifierService.getCanonicalForm(submission.getCollection()));
    inputs=inputSet.getPageRows(getPage() - 1,submission.hasMultipleTitles(),submission.isPublishedBefore());
  }
 catch (  ServletException se) {
    throw new UIException(se);
  }
  Division div=body.addInteractiveDivision("String_Node_Str",actionURL,Division.METHOD_POST,"String_Node_Str");
  div.setHead(T_submission_head);
  addSubmissionProgressList(div);
  List form=div.addList("String_Node_Str",List.TYPE_FORM);
  form.setHead(T_head);
  for (  DCInput dcInput : inputs) {
    if (!dcInput.isVisible(submissionInfo.isInWorkflow() ? WORKFLOW_SCOPE : SUBMISSION_SCOPE))     continue;
    String schema=dcInput.getSchema();
    String element=dcInput.getElement();
    String qualifier=dcInput.getQualifier();
    DCValue[] dcValues=item.getMetadata(schema,element,qualifier,Item.ANY);
    String fieldName=FlowUtils.getFieldName(dcInput);
    String inputType=dcInput.getInputType();
    if (inputType.equals("String_Node_Str")) {
      renderNameField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderDateField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderSeriesField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderOneboxField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      DCValue[] unfiltered=item.getMetadata(dcInput.getSchema(),dcInput.getElement(),Item.ANY,Item.ANY);
      ArrayList<DCValue> filtered=new ArrayList<DCValue>();
      for (      DCValue dcValue : unfiltered) {
        String unfilteredFieldName=dcValue.element + "String_Node_Str" + dcValue.qualifier;
        if (!inputSet.isFieldPresent(unfilteredFieldName)) {
          filtered.add(dcValue);
        }
      }
      renderQualdropField(form,fieldName,dcInput,filtered.toArray(new DCValue[filtered.size()]));
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderTextArea(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderDropdownField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderSelectFromListField(form,fieldName,dcInput,dcValues);
    }
 else     if (inputType.equals("String_Node_Str")) {
      renderOneboxField(form,fieldName,dcInput,dcValues);
    }
 else {
      form.addItem(T_unknown_field);
    }
  }
  addControlButtons(form);
}