Specify and enforce the Builder contract. Add support for adding Iterable/Iterator