Scope (@NotNull ScopeOwner element) { SoftReference<Scope> ref = element.getUserData(SCOPE_KEY); Scope scope = dereference(ref); if (scope == null) { scope = new ScopeImpl(element); element.putUserData(SCOPE_KEY, new SoftReference<>(scope)); } return scope; }