append can't be implemented in AbstractComplements because the
Collection type is abstract; renamed the concat method to something
funny because it manipulates only views
using instanceof to simulate polymorphism of a Collection argument;
we can't change the Collection API to pass the method to call, nor do we
want to replace the Collection argument with a subclass argument
ComplementsArrayList is now derived from AbstractComplements;
append returns a new object containing the same delegate, hence the
current object is modified too!
trying to use clone() instead of instanceof
implemented ComplementsArrayList as subclass of AbstractComplements;
introduced distint append and copyAppend methods
removed append(), redundant because it's the same as Collection.add();
rename copyAppend() to copyAdd()
removed ComplementsOnArrayList; since ComplementsArrayList now
implements Collection, the two have the same interfaces!
introduced AtomicSingletonCollection and used it for AbstractComplement
no compile errors in the Complement(s) classes;