Smarter mechanism to automatically determine the type of object being built by the builder interface. Allows for multiple interfaces on the builder.
Added negative test case
Another test case