public void add(final AbsAxis mAx) {
        AbsAxis axis = mAx;

        if (isDupOrd(axis)) {
            axis = new DupFilterAxis(mRtx, axis);
            DupState.nodup = true;
        }

        switch (mNumber) {
        case 0:
            mFirstAxis = axis;
            mNumber++;
            break;
        case 1:
            mExpr = new NestedAxis(mFirstAxis, axis, mRtx);
            mNumber++;
            break;
        default:
            final AbsAxis cache = mExpr;
            mExpr = new NestedAxis(cache, axis, mRtx);
        }

    }
public void add ( final AbsAxis mAx ) { AbsAxis axis = mAx ; if ( isDupOrd ( axis ) ) { axis = new DupFilterAxis ( mRtx , axis ) ; DupState . nodup = true ; } switch ( mNumber ) { case 0 : mFirstAxis = axis ; mNumber ++ ; break ; case 1 : mExpr = new NestedAxis ( mFirstAxis , axis , mRtx ) ; mNumber ++ ; break ; default : final AbsAxis cache = mExpr ; mExpr = new NestedAxis ( cache , axis , mRtx ) ; } }
Adds a new Axis to the expression chain. The first axis that is added has
to be stored till a second axis is added. When the second axis is added,
it is nested with the first one and builds the execution chain.

@param mAx
ach The axis to add.