StickyLookup for NetBeans

The following is a slightly more compact version of the elegant StickyLookup, first described by Ernest Lötter: Thanks, Ernest!

public class StickyLookup extends ProxyLookup implements LookupListener {
    private final Lookup.Result result;
    private final InstanceContent ic;

    public StickyLookup(final Lookup lookup, final Class<?> clazz) {
        this(lookup, clazz, new InstanceContent());

    private StickyLookup(final Lookup lookup, final Class<?> clazz, InstanceContent ic) {
        super(Lookups.exclude(lookup, clazz), new AbstractLookup(ic));
        this.ic = ic;

        this.result = lookup.lookupResult(clazz);
        this.ic.set(this.result.allInstances(), null);

    public void resultChanged(LookupEvent ev) {
        if (this.result.allInstances().isEmpty()) {
            // Wrapped lookup is empty. We pretend like nothing happened and keep 
            // exposing the same instances as before.
        } else {
            // Just copy whatever the wrapped instance has
            ic.set(result.allInstances(), null);