Added complex type
Added container types
Suppress generic varargs warning using contains()
Added test target to build
Compile tests too.
Extract out types into own package.