Almost every Java library I've used in the past decade has been confusing, over-engineered and required verbose, chatty code. Why is that?