class If extends GenericInput<I> implements InputOutput<I, O>, Operations<Operation> {

    @Override
    public If<I, O> shallowClone() throws CloneFailedException {
        If.Builder<I, O> builder = new If.Builder<I, O>()
                .input(getInput())
                .condition(condition)
                .conditional(conditional)
                .then(then)
                .otherwise(otherwise)
                .options(options);

        if (null != conditional) {
            builder = builder.conditional(conditional.shallowClone());
        }
        if (null != then) {
            builder = builder.then(then.shallowClone());
        }
        if (null != otherwise) {
            builder = builder.otherwise(otherwise.shallowClone());
        }

        return builder.build();
    }

}