class OperationJoin {

    public OperationJoin setOperations(Operation... ops) {
        if (ops.length == 0) {
            throw new IllegalArgumentException("At least one operation to join expected");
        }

        if (this.operationIterator != null) {
            throw new IllegalStateException(ERROR_MSG_OPERATIONS_ALREADY_SET);
        }

        for (Operation op : ops) {
            prepareOperation(op);
        }

        this.operationIterator = this.operations.values().iterator();
        return this;
    }

    private  OperationJoin();

}