The Type-Safe Builder Pattern in Java, and the Jilt Library
endoflineblog.com