package mho.matchstick.iterableProviders;

import mho.matchstick.objects.LabeledGraph;
import mho.wheels.iterables.ExhaustiveProvider;
import mho.wheels.ordering.Ordering;
import mho.wheels.structures.*;
import org.jetbrains.annotations.NotNull;

import java.util.List;

@SuppressWarnings("unused")
public final strictfp class MatchstickExhaustiveProvider extends MatchstickIterableProvider {
    public static final @NotNull MatchstickExhaustiveProvider INSTANCE = new MatchstickExhaustiveProvider();

    private MatchstickExhaustiveProvider() {
        super(ExhaustiveProvider.INSTANCE);
    }

    public @NotNull <T> Iterable<List<T>> distinctListsLex(@NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.distinctListsLex(xs);
    }

    public @NotNull Iterable<String> distinctStringsLex(@NotNull String s) {
        return ExhaustiveProvider.INSTANCE.distinctStringsLex(s);
    }

    public @NotNull <T> Iterable<List<T>> distinctListsLexAtLeast(int minSize, @NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.distinctListsLexAtLeast(minSize, xs);
    }

    public @NotNull Iterable<String> distinctStringsLexAtLeast(int minSize, @NotNull String s) {
        return ExhaustiveProvider.INSTANCE.distinctStringsLexAtLeast(minSize, s);
    }

    public @NotNull <T> Iterable<List<T>> distinctListsShortlex(@NotNull List<T> xs) {
        return ExhaustiveProvider.INSTANCE.distinctListsShortlex(xs);
    }

    public @NotNull Iterable<String> distinctStringsShortlex(@NotNull String s) {
        return ExhaustiveProvider.INSTANCE.distinctStringsShortlex(s);
    }

    public @NotNull <T> Iterable<List<T>> distinctListsShortlexAtLeast(int minSize, @NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.distinctListsShortlexAtLeast(minSize, xs);
    }

    public @NotNull Iterable<String> distinctStringsShortlexAtLeast(int minSize, @NotNull String s) {
        return ExhaustiveProvider.INSTANCE.distinctStringsShortlexAtLeast(minSize, s);
    }

    public @NotNull <T> Iterable<List<T>> bagsLex(int size, @NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.bagsLex(size, xs);
    }

    public @NotNull Iterable<String> stringBagsLex(int size, @NotNull String s) {
        return ExhaustiveProvider.INSTANCE.stringBagsLex(size, s);
    }

    public @NotNull <T> Iterable<List<T>> bagsShortlex(@NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.bagsShortlex(xs);
    }

    public @NotNull Iterable<String> stringBagsShortlex(@NotNull String s) {
        return ExhaustiveProvider.INSTANCE.stringBagsShortlex(s);
    }

    public @NotNull <T> Iterable<List<T>> bagsShortlexAtLeast(int minSize, @NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.bagsShortlexAtLeast(minSize, xs);
    }

    public @NotNull Iterable<String> stringBagsShortlexAtLeast(int minSize, @NotNull String s) {
        return ExhaustiveProvider.INSTANCE.stringBagsShortlexAtLeast(minSize, s);
    }

    public @NotNull <T> Iterable<List<T>> subsetsLex(@NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.subsetsLex(xs);
    }

    public @NotNull Iterable<String> stringSubsetsLex(@NotNull String s) {
        return ExhaustiveProvider.INSTANCE.stringSubsetsLex(s);
    }

    public @NotNull <T> Iterable<List<T>> subsetsLexAtLeast(int minSize, @NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.subsetsLexAtLeast(minSize, xs);
    }

    public @NotNull Iterable<String> stringSubsetsLexAtLeast(int minSize, @NotNull String s) {
        return ExhaustiveProvider.INSTANCE.stringSubsetsLexAtLeast(minSize, s);
    }

    public @NotNull <T> Iterable<List<T>> subsetsShortlex(@NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.subsetsShortlex(xs);
    }

    public @NotNull Iterable<String> stringSubsetsShortlex(@NotNull String s) {
        return ExhaustiveProvider.INSTANCE.stringSubsetsShortlex(s);
    }

    public @NotNull <T> Iterable<List<T>> subsetsShortlexAtLeast(int minSize, @NotNull Iterable<T> xs) {
        return ExhaustiveProvider.INSTANCE.subsetsShortlexAtLeast(minSize, xs);
    }

    public @NotNull Iterable<String> stringSubsetsShortlexAtLeast(int minSize, @NotNull String s) {
        return ExhaustiveProvider.INSTANCE.stringSubsetsShortlexAtLeast(minSize, s);
    }

    public @NotNull <T> Iterable<List<T>> controlledListsLex(@NotNull List<Iterable<T>> xss) {
        return ExhaustiveProvider.INSTANCE.controlledListsLex(xss);
    }

    @Override
    public @NotNull <T extends Comparable<T>> Iterable<LabeledGraph<T>> labeledGraphs(@NotNull Iterable<T> ns) {
        return null;
    }
}

@@ -132,77 +132,8 @@
 er;%0A
-import mho.wheels.ordering.Ordering;%0Aimport mho.wheels.structures.*;%0A
 impo
@@ -527,1420 +527,8 @@
  %7D%0A%0A
-    public @NotNull %3CT%3E Iterable%3CList%3CT%3E%3E distinctListsLex(@NotNull Iterable%3CT%3E xs) %7B%0A        return ExhaustiveProvider.INSTANCE.distinctListsLex(xs);%0A    %7D%0A%0A    public @NotNull Iterable%3CString%3E distinctStringsLex(@NotNull String s) %7B%0A        return ExhaustiveProvider.INSTANCE.distinctStringsLex(s);%0A    %7D%0A%0A    public @NotNull %3CT%3E Iterable%3CList%3CT%3E%3E distinctListsLexAtLeast(int minSize, @NotNull Iterable%3CT%3E xs) %7B%0A        return ExhaustiveProvider.INSTANCE.distinctListsLexAtLeast(minSize, xs);%0A    %7D%0A%0A    public @NotNull Iterable%3CString%3E distinctStringsLexAtLeast(int minSize, @NotNull String s) %7B%0A        return ExhaustiveProvider.INSTANCE.distinctStringsLexAtLeast(minSize, s);%0A    %7D%0A%0A    public @NotNull %3CT%3E Iterable%3CList%3CT%3E%3E distinctListsShortlex(@NotNull List%3CT%3E xs) %7B%0A        return ExhaustiveProvider.INSTANCE.distinctListsShortlex(xs);%0A    %7D%0A%0A    public @NotNull Iterable%3CString%3E distinctStringsShortlex(@NotNull String s) %7B%0A        return ExhaustiveProvider.INSTANCE.distinctStringsShortlex(s);%0A    %7D%0A%0A    public @NotNull %3CT%3E Iterable%3CList%3CT%3E%3E distinctListsShortlexAtLeast(int minSize, @NotNull Iterable%3CT%3E xs) %7B%0A        return ExhaustiveProvider.INSTANCE.distinctListsShortlexAtLeast(minSize, xs);%0A    %7D%0A%0A    public @NotNull Iterable%3CString%3E distinctStringsShortlexAtLeast(int minSize, @NotNull String s) %7B%0A        return ExhaustiveProvider.INSTANCE.distinctStringsShortlexAtLeast(minSize, s);%0A    %7D%0A%0A
     

remove unnecessary ExhaustiveProvider methods