private void generateAdder(Class model, Type self, Field f) {
        f.final_();

        // All collections are parameterized types.
        final ParameterizedType paramType = (ParameterizedType) f.getType();

        final Field param = Field.of(singular(f.getName()), paramType.getActualTypeArguments()[0]);
        final Method add = Method.of("addTo" + ucfirst(f.getName()), self)
            .set(Javadoc.of()
                .setText("Adds the specified " + lcfirst(shortName(param.getType().getTypeName())) + " to the " + f.getName() + OF_THIS + shortName(model.getName()) + ".")
                .add(JavadocTag.of("param", param.getName(), "the new value"))
                .add(JavadocTag.of(RETURN, "a reference to this object"))
            ).public_()
            .add(param)
            .add(THIS + "." + f.getName() + ".add(" + param.getName() + ");")
            .add(RETURN + " " + THIS + ";");

        if (onlyInclude.test(f, add)) {
            model.add(add);
        }
    }
Generates an adder for the field in the specified
class and sets the fields to private. Method signatures that has been
excluded in the construction of this control will be excluded from the
generation.
<p>

@param model the model to generate for
@param self the type to generate for
@param f the field to generate for
common-parent/codegen/src/main/java/com/speedment/common/codegen/controller/SetGetAdd.java