Feature/generate named constructor from beConstructedThrough

Isn't the point of using named constructors that you usually have a couple of ways of constructing an object. So rather than having `null` arguments in a standard constructor, you create the named constructors. If you did that wouldn't you want to ensure that no one could construct the object in a way that might introduce inconsistencies?