The only library I&#x27;ve felt absolutely safe doing upgrades with is Wicket, because it makes extensive use of the type system to ensure that you only use it in supported ways: many classes are final, and even those that aren&#x27;t have a lot of final methods. It can be frustrating to have to copy-paste a Wicket class when you want similar behaviour, but it works beautifully.