public final LogoParser.varref_return varref() throws RecognitionException {
        LogoParser.varref_return retval = new LogoParser.varref_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COLON59=null;
        Token ID60=null;

        Object COLON59_tree=null;
        Object ID60_tree=null;

        try {
            // /home/carlos/Proyectos/logojava/Logo.g:160:2: ( COLON ID )
            // /home/carlos/Proyectos/logojava/Logo.g:160:4: COLON ID
            {
            root_0 = (Object)adaptor.nil();


            COLON59=(Token)match(input,COLON,FOLLOW_COLON_in_varref943); 
            COLON59_tree = 
            (Object)adaptor.create(COLON59)
            ;
            adaptor.addChild(root_0, COLON59_tree);


            ID60=(Token)match(input,ID,FOLLOW_ID_in_varref945); 
            ID60_tree = 
            (Object)adaptor.create(ID60)
            ;
            adaptor.addChild(root_0, ID60_tree);


             retval.value = new VarRef((ID60!=null?ID60.getText():null));

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }