List attachments = record.get(Fields.ATTACHMENT_BODY);
List mimeTypes = record.get(Fields.ATTACHMENT_MIME_TYPE);
List charsets = record.get(Fields.ATTACHMENT_CHARSET);
List names = record.get(Fields.ATTACHMENT_NAME);
for (int i = 0; i < attachments.size(); i++) {
Record outputRecord = record.copy();
outputRecord.getFields().replaceValues(Fields.ATTACHMENT_BODY, Collections.singletonList(attachments.get(i)));
List<Object> replacement;
replacement = i < mimeTypes.size() ? Collections.singletonList(mimeTypes.get(i)) : Collections.emptyList();
outputRecord.getFields().replaceValues(Fields.ATTACHMENT_MIME_TYPE, replacement);
replacement = i < charsets.size() ? Collections.singletonList(charsets.get(i)) : Collections.emptyList();
outputRecord.getFields().replaceValues(Fields.ATTACHMENT_CHARSET, replacement);
replacement = i < names.size() ? Collections.singletonList(names.get(i)) : Collections.emptyList();
outputRecord.getFields().replaceValues(Fields.ATTACHMENT_NAME, replacement);
// pass record to next command in chain:
if (!super.doProcess(outputRecord)) {
return false;
}