The E4 Injector was decoupled from jakarta annotations by replacing
the ClassRequestor pseudo-dependency descriptor with an empty array, in:
- https://github.com/eclipse-platform/eclipse.platform/pull/2649
That pseudo-link is what notifies an injected object when its supplier
is disposed. With an empty descriptor the link is no longer established,
so @PreDestroy of objects that only use constructor/@PostConstruct
injection (no @Inject links) is no longer guaranteed to run before the
supplying context is disposed.
This broke disposal ordering and surfaced as a failure of
PartRenderingEngineTests.testBut336225.
Restore a non-empty, optional descriptor without re-introducing jakarta:
use a private marker interface InjectionLink that is never available
from any supplier together with e4's own @Optional annotation. This
keeps the injector free of specific jakarta annotation classes (the goal
of the previous change) while re-establishing the supplier-disposal
link.
Fixes https://github.com/eclipse-platform/eclipse.platform/issues/2700