/**
  * @see parser.IDLParserVisitor#visit(ASTshift_expr, Object)
  */
 public Object visit(ASTshift_expr node, Object data) {        
     Literal result = 
         (Literal)node.jjtGetChild(0).jjtAccept(this, data);
     for(int i=1; i < node.jjtGetNumChildren(); i++) {
         // evaluate the add-expr and lshift/rshift the current result with it
         switch (node.GetShiftOperation(i-1)) {
             case ShiftOps.Right:
                 result = result.ShiftRightBy((Literal)node.jjtGetChild(i).jjtAccept(this, data));
                 break;
             case ShiftOps.Left:
                 result = result.ShiftLeftBy((Literal)node.jjtGetChild(i).jjtAccept(this, data));
                 break;
         }
     }
     return result;
 }