if (hasNodeSetDTMArgs() || hasReferenceArgs()) {
if (hasNodeSetArgs() || hasReferenceArgs()) {
    public void translateDesynthesized(ClassGenerator classGen,				       MethodGenerator methodGen) {	if (hasNodeSetDTMArgs() || hasReferenceArgs()) {	    translate(classGen, methodGen);	    desynthesize(classGen, methodGen);	}	else {	    BranchInstruction bi = null;	    final InstructionList il = methodGen.getInstructionList();	    _left.translate(classGen, methodGen);	    _right.translate(classGen, methodGen);	    // TODO: optimize if one of the args is 0	    boolean tozero = false;	    Type tleft = _left.getType(); 	    if (tleft instanceof RealType) {		il.append(tleft.CMP(_op == LT || _op == LE));		tleft = Type.Int;		tozero = true;	    }	    switch (_op) {	    case LT:		bi = tleft.GE(tozero);			break;			    case GT:		bi = tleft.LE(tozero);		break;			    case LE:		bi = tleft.GT(tozero);		break;			    case GE:		bi = tleft.LT(tozero);		break;			    default:		final ErrorMsg msg = 		    new ErrorMsg("Unknown operator for relational expression");		getParser().reportError(Constants.FATAL, msg);	    }	    _falseList.add(il.append(bi));		// must be backpatched	}    }