@Contract(pure = true)
  public @NotNull GlobalSearchScope intersectWith(@NotNull GlobalSearchScope scope) {
    if (scope == this) return this;
    if (scope instanceof IntersectionScope && ((IntersectionScope)scope).containsScope(this)) {
      return scope;
    }
    return new IntersectionScope(this, scope);
  }
@Contract(pure = true)
  public @NotNull GlobalSearchScope intersectWith(@NotNull GlobalSearchScope scope)