private void emitCollectionBinding(StringBuilder builder, CollectionBinding binding, int[] ids) { builder.append(" target.").append(binding.getName()).append(" = "); switch (binding.getKind()) { case ARRAY: builder.append("Finder.arrayOf("); break; case LIST: builder.append("Finder.listOf("); break; default: throw new IllegalStateException("Unknown kind: " + binding.getKind()); } for (int i = 0; i < ids.length; i++) { if (i > 0) { builder.append(','); } builder.append("\n "); emitCastIfNeeded(builder, binding.getType()); if (binding.isRequired()) { builder .append("finder.findRequiredView(source, ") .append(ids[i]) .append(", \"") .append(binding.getName()) .append("\")"); } else { builder.append("finder.findOptionalView(source, ").append(ids[i]).append(")"); } } builder.append("\n );"); }