PackageSet (@NotNull Function<? super PackageSet, ? extends PackageSet> transformation) { PackageSet updated = transformation.apply(myComplementarySet); return updated != myComplementarySet ? new ComplementPackageSet(updated) : this; }