@Override
  public synchronized void addDerivedReference(@NotNull RefOverridable reference) {
    if (myDerivedReferences == null) {
      myDerivedReferences = Collections.singleton(reference);
      return;
    }
    if (myDerivedReferences.size() == 1) {
      // convert from singleton
      myDerivedReferences = new HashSet<>(myDerivedReferences);
    }
    myDerivedReferences.add(reference);
  }
@Override
  public synchronized void addDerivedReference(@NotNull RefOverridable reference)