This is what makes Java underrated these years. Some annoying stuff pays off over a decade several times. You can make insane complexity with ease.
The language, is beautiful.
But the spooky action at a distance type annotation hell, needing builders everywhere because of lack of named parameters, poorly conceived generics, nullability not being first class, lambdas being incompatible with checked exceptions, etc. are a pain.