class OperationChain implements Output<OUT>,
        Operations<Operation> {

    public String toOverviewString() {
        final String opStrings = operations.stream()
                .filter(o -> null != o)
                .map(o -> o.getClass().getSimpleName())
                .collect(Collectors.joining("->"));

        return getClass().getSimpleName() + "[" + opStrings + "]";
    }

    public  OperationChain();
    public  OperationChain(final Operation operation);
    public  OperationChain(final Output<OUT> operation);
    public  OperationChain(final Operation... operations);
    public  OperationChain(final List<Operation> operations);
    public  OperationChain(final List<Operation> operations, final boolean flatten);

}