package compiler.lib.generators; import java.util.List; final class RestrictableMixedGenerator> extends MixedGenerator, T> implements RestrictableGenerator { RestrictableMixedGenerator(Generators g, List> generators, List weights) { super(g, generators, weights); } RestrictableMixedGenerator(RestrictableMixedGenerator other, T newLo, T newHi) { super(other, (generator) -> { try { return generator.restricted(newLo, newHi); } catch (EmptyGeneratorException e) { return null; } }); } @Override public RestrictableGenerator restricted(T newLo, T newHi) { return new RestrictableMixedGenerator<>(this, newLo, newHi); } }