Extending genetic operators works more or less the same way than views: it is a matter of creating new letter classes, and changing some stuff in the envelope class. We will create a new operator, shift, which adds or substract one from one gene, substracting or adding one to the next at the same time.
case SHIFT:
op = new shiftOp( _lenBits );
arity = FALSE;
break;
which creates the letter object for the new operator class, and
assigns it FALSE arity, that is, arity one. Binary operators
would have TRUE arity.