// $ANTLR start "classname"
  // AnnotationParser.g:92:1: classname : cn= STRING -> ^( CLASSNAME $cn) ;
  public final AnnotationParser.classname_return classname() throws RecognitionException {
    AnnotationParser.classname_return retval = new AnnotationParser.classname_return();
    retval.start = input.LT(1);

    AnnotationCommonTree root_0 = null;

    CommonToken cn = null;

    AnnotationCommonTree cn_tree = null;
    RewriteRuleTokenStream stream_STRING = new RewriteRuleTokenStream(adaptor, "token STRING");

    try {
      // AnnotationParser.g:93:3: (cn= STRING -> ^( CLASSNAME $cn) )
      // AnnotationParser.g:93:5: cn= STRING
      {
        cn = (CommonToken) match(input, STRING, FOLLOW_STRING_in_classname205);
        stream_STRING.add(cn);

        // AST REWRITE
        // elements: cn
        // token labels: cn
        // rule labels: retval
        // token list labels:
        // rule list labels:
        // wildcard labels:
        retval.tree = root_0;
        RewriteRuleTokenStream stream_cn = new RewriteRuleTokenStream(adaptor, "token cn", cn);
        RewriteRuleSubtreeStream stream_retval =
            new RewriteRuleSubtreeStream(
                adaptor, "rule retval", retval != null ? retval.tree : null);

        root_0 = (AnnotationCommonTree) adaptor.nil();
        // 94:5: -> ^( CLASSNAME $cn)
        {
          // AnnotationParser.g:94:7: ^( CLASSNAME $cn)
          {
            AnnotationCommonTree root_1 = (AnnotationCommonTree) adaptor.nil();
            root_1 =
                (AnnotationCommonTree)
                    adaptor.becomeRoot(
                        (AnnotationCommonTree) adaptor.create(CLASSNAME, "CLASSNAME"), root_1);

            adaptor.addChild(root_1, stream_cn.nextNode());

            adaptor.addChild(root_0, root_1);
          }
        }

        retval.tree = root_0;
      }

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

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

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

    } finally {
    }
    return retval;
  }
  // $ANTLR start "ann_class"
  // AnnotationParser.g:83:1: ann_class : ( namespace )* classname ;
  public final AnnotationParser.ann_class_return ann_class() throws RecognitionException {
    AnnotationParser.ann_class_return retval = new AnnotationParser.ann_class_return();
    retval.start = input.LT(1);

    AnnotationCommonTree root_0 = null;

    AnnotationParser.namespace_return namespace7 = null;

    AnnotationParser.classname_return classname8 = null;

    try {
      // AnnotationParser.g:84:3: ( ( namespace )* classname )
      // AnnotationParser.g:84:5: ( namespace )* classname
      {
        root_0 = (AnnotationCommonTree) adaptor.nil();

        // AnnotationParser.g:84:5: ( namespace )*
        loop3:
        do {
          int alt3 = 2;
          int LA3_0 = input.LA(1);

          if ((LA3_0 == STRING)) {
            int LA3_1 = input.LA(2);

            if ((LA3_1 == BSLASH)) {
              alt3 = 1;
            }
          }

          switch (alt3) {
            case 1:
              // AnnotationParser.g:84:5: namespace
              {
                pushFollow(FOLLOW_namespace_in_ann_class155);
                namespace7 = namespace();

                state._fsp--;

                adaptor.addChild(root_0, namespace7.getTree());
              }
              break;

            default:
              break loop3;
          }
        } while (true);

        pushFollow(FOLLOW_classname_in_ann_class158);
        classname8 = classname();

        state._fsp--;

        adaptor.addChild(root_0, classname8.getTree());
      }

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

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

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

    } finally {
    }
    return retval;
  }