/** Visible for testing */ String emitHumanDescription(List<Binding> bindings) { StringBuilder builder = new StringBuilder(); switch (bindings.size()) { case 1: builder.append(bindings.get(0).getDescription()); break; case 2: builder .append(bindings.get(0).getDescription()) .append(" and ") .append(bindings.get(1).getDescription()); break; default: for (int i = 0, count = bindings.size(); i < count; i++) { Binding requiredField = bindings.get(i); if (i != 0) { builder.append(", "); } if (i == count - 1) { builder.append("and "); } builder.append(requiredField.getDescription()); } break; } return builder.toString(); } }