Explanation: `@SuperBuilder` adds a whole bevy of type annotations to make it work, and that implementation detail leaks out, we can't prevent that from happening. It is useful to be able to explain in simple terms what Builder actually does, and SuperBuilder makes it way more complicated to do so. Subclassing is rare enough that the burden is not worth it, so both will continue to exist. The easier to explain @Builder by default, @SuperBuilder if you need it.
Newell Rose wrote:
> Each implementation of a SuperBuilder should also have an interface defined. This would avoid some of the complex type parameters.
I'm not sure I follow. Can you show an example of what it should desugar to? Note that this is highly unlikely to happen unless it's amazing, as it would be backwards incompatible (there is room - @SuperBuilder is still in experimental, but experimental is no excuse to frivolously annoy folks by changing what lombok is doing. There'd have to be an excellent reason).