Disposable (@NotNull BiFunction<? super JComponent, ? super Graphics2D, ? extends Graphics2D> fun) { ourGlobalTransform.add(fun); return new Disposable() { @Override public void dispose() { ourGlobalTransform.remove(fun); } }; }