Consider making Disposable things implement AutoCloseable
In SciJava, the Disposable interface is used for things that can (should, really) be disposed when you are done with them. But of course Java already has AutoCloseable, which is similar, but has more integration with the compiler: you get told when you forget to call close(), and you can automatically handle doing so using a try-with-resources block.
Should all things in SJC implementing Disposable—the Context and Services in particular, implement AutoCloseable instead or in addition?
It gets tricky for things like Gateways, which can create a new Context on the fly, or can accept an existing one. Those types of objects would need to keep track of whether they created their own Context, and if so, dispose it in their close() method—but if one was passed in, refrain from disposing it.
/cc @hanslovsky