Need more complicated generics for things to sub-class the builder, to add additional builder methods. e.g. if call builder.host() then can't return AbstractToolBuilder because then couldn't call additional builder methods that are on the sub-class.Will do that in next pull request.