Program: 167336
Project: 167336
Buggy source:
protected void processMessage(Message inputMessage,boolean unitOfWorkBoundaryReached,ISendMessageCallback callback) throws MessagingException {
  String runWhen=properties.get(RUN_WHEN);
  if ((PER_UNIT_OF_WORK.equals(runWhen) && unitOfWorkBoundaryReached) || PER_MESSAGE.equals(runWhen) || PER_ENTITY.equals(runWhen)) {
    StringBuilder to=new StringBuilder(properties.get(TO_LINE,"String_Node_Str"));
    StringBuilder from=new StringBuilder(properties.get(FROM_LINE,"String_Node_Str"));
    StringBuilder cc=new StringBuilder(properties.get(CC_LINE,"String_Node_Str"));
    StringBuilder bcc=new StringBuilder(properties.get(BCC_LINE,"String_Node_Str"));
    String recipientType=properties.get(SOURCE_STEP_EMAIL_ADDRESS_TYPE);
    String subject=properties.get(SUBJECT,"String_Node_Str");
    String body=properties.get(BODY,"String_Node_Str");
    StringBuilder recipientBuilder=null;
    if (VALUE_SOURCE_STEP_EMAIL_ADDRESS_TYPE_TO.equals(recipientType)) {
      recipientBuilder=to;
    }
 else     if (VALUE_SOURCE_STEP_EMAIL_ADDRESS_TYPE_CC.equals(recipientType)) {
      recipientBuilder=cc;
    }
 else     if (VALUE_SOURCE_STEP_EMAIL_ADDRESS_TYPE_BCC.equals(recipientType)) {
      recipientBuilder=bcc;
    }
    boolean oneMessagePerRecipient=properties.is(ONE_EMAIL_PER_RECIPIENT);
    for (    String recipient : recipients) {
      recipientBuilder.append("String_Node_Str").append(recipient);
      if (oneMessagePerRecipient) {
        sendEmail(inputMessage,to.toString(),cc.toString(),bcc.toString(),from.toString(),subject,body,callback);
        recipientBuilder.replace(recipientBuilder.length() - recipient.length() - 1,recipientBuilder.length(),"String_Node_Str");
      }
    }
    if (!oneMessagePerRecipient) {
      sendEmail(inputMessage,to.toString(),cc.toString(),bcc.toString(),from.toString(),subject,body,callback);
    }
  }
}

Fixed version (ground truth):
protected void processMessage(Message inputMessage,boolean unitOfWorkBoundaryReached,ISendMessageCallback callback) throws MessagingException {
  String runWhen=properties.get(RUN_WHEN);
  if ((PER_UNIT_OF_WORK.equals(runWhen) && unitOfWorkBoundaryReached) || (PER_MESSAGE.equals(runWhen) && !(inputMessage instanceof ControlMessage)) || PER_ENTITY.equals(runWhen)) {
    StringBuilder to=new StringBuilder(properties.get(TO_LINE,"String_Node_Str"));
    StringBuilder from=new StringBuilder(properties.get(FROM_LINE,"String_Node_Str"));
    StringBuilder cc=new StringBuilder(properties.get(CC_LINE,"String_Node_Str"));
    StringBuilder bcc=new StringBuilder(properties.get(BCC_LINE,"String_Node_Str"));
    String recipientType=properties.get(SOURCE_STEP_EMAIL_ADDRESS_TYPE);
    String subject=properties.get(SUBJECT,"String_Node_Str");
    String body=properties.get(BODY,"String_Node_Str");
    StringBuilder recipientBuilder=null;
    if (VALUE_SOURCE_STEP_EMAIL_ADDRESS_TYPE_TO.equals(recipientType)) {
      recipientBuilder=to;
    }
 else     if (VALUE_SOURCE_STEP_EMAIL_ADDRESS_TYPE_CC.equals(recipientType)) {
      recipientBuilder=cc;
    }
 else     if (VALUE_SOURCE_STEP_EMAIL_ADDRESS_TYPE_BCC.equals(recipientType)) {
      recipientBuilder=bcc;
    }
    boolean oneMessagePerRecipient=properties.is(ONE_EMAIL_PER_RECIPIENT);
    for (    String recipient : recipients) {
      recipientBuilder.append("String_Node_Str").append(recipient);
      if (oneMessagePerRecipient) {
        sendEmail(inputMessage,to.toString(),cc.toString(),bcc.toString(),from.toString(),subject,body,callback);
        recipientBuilder.replace(recipientBuilder.length() - recipient.length() - 1,recipientBuilder.length(),"String_Node_Str");
      }
    }
    if (!oneMessagePerRecipient) {
      sendEmail(inputMessage,to.toString(),cc.toString(),bcc.toString(),from.toString(),subject,body,callback);
    }
  }
}