package tc.oc.pgm.compose; import java.util.stream.Stream; import tc.oc.commons.core.inspect.Inspectable; import tc.oc.pgm.filters.query.ITransientQuery; /** * A structure of operators that generate a flat sequence of {@link T}s from a {@link ITransientQuery}. * * Different queries will generate different sequences, within the rules of the operators. */ public interface Composition<T> extends Inspectable { boolean isConstant(); Stream<T> dependencies(); Stream<T> elements(ITransientQuery query); } abstract class CompositionImpl<T> extends Inspectable.Impl implements Composition<T> {}