lazy => 1 is unnecessary on "n" (since it doesn't rely on anything), which is why I left out.
True, the reason i put it in though was mostly future-proofing. It doesn't add much overhead (it really just spread it out actually) and I find that having everything in the dependency chain be lazy just makes things easier to refactor and tweak later on.
The only other difference between our code is that I inlined the default builders. I don't think having to look somewhere else in the file for that code is appropriate.
Personally I agree, I tend to use default more then I use builder. In fact, I only use builder when I want to easily allow subclassing of the builder method.