private void emitReset(StringBuilder builder) {
   builder.append("  public static void reset(").append(targetClass).append(" target) {\n");
   if (parentInjector != null) {
     builder.append("    ").append(parentInjector).append(".reset(target);\n\n");
   }
   for (ViewInjection injection : viewIdMap.values()) {
     for (ViewBinding viewBinding : injection.getViewBindings()) {
       builder.append("    target.").append(viewBinding.getName()).append(" = null;\n");
     }
   }
   for (CollectionBinding collectionBinding : collectionBindings.keySet()) {
     builder.append("    target.").append(collectionBinding.getName()).append(" = null;\n");
   }
   builder.append("  }\n");
 }
  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    );");
  }