int i;
List<PermutationsProvider> disjointProviders = new ArrayList<>();
for (i = (isDerivativeContent ? 1 : 0) + 1; i <= size(); ++i)
if (i == size() || get(i).hash() != get(i - 1).hash()) {
if (i - 1 != begin)
disjointProviders.add(new SimplePermutationProvider(begin, i));
begin = i;
}
provider = new PermutationsProviderImpl(disjointProviders);
}