List<JCExpression> qualidentList(boolean allowAnnos) {
        ListBuffer<JCExpression> ts = new ListBuffer<>();

        List<JCAnnotation> typeAnnos = allowAnnos ? typeAnnotationsOpt() : List.nil();
        JCExpression qi = qualident(allowAnnos);
        if (!typeAnnos.isEmpty()) {
            JCExpression at = insertAnnotationsToMostInner(qi, typeAnnos, false);
            ts.append(at);
        } else {
            ts.append(qi);
        }
        while (token.kind == COMMA) {
            nextToken();

            typeAnnos = allowAnnos ? typeAnnotationsOpt() : List.nil();
            qi = qualident(allowAnnos);
            if (!typeAnnos.isEmpty()) {
                JCExpression at = insertAnnotationsToMostInner(qi, typeAnnos, false);
                ts.append(at);
            } else {
                ts.append(qi);
            }
        }
        return ts.toList();
    }
List < JCExpression > qualidentList ( boolean allowAnnos ) { ListBuffer < JCExpression > ts = new ListBuffer < > ( ) ; List < JCAnnotation > typeAnnos = allowAnnos ? typeAnnotationsOpt ( ) : List . nil ( ) ; JCExpression qi = qualident ( allowAnnos ) ; if ( ! typeAnnos . isEmpty ( ) ) { JCExpression at = insertAnnotationsToMostInner ( qi , typeAnnos , false ) ; ts . append ( at ) ; } else { ts . append ( qi ) ; } while ( token . kind == COMMA ) { nextToken ( ) ; typeAnnos = allowAnnos ? typeAnnotationsOpt ( ) : List . nil ( ) ; qi = qualident ( allowAnnos ) ; if ( ! typeAnnos . isEmpty ( ) ) { JCExpression at = insertAnnotationsToMostInner ( qi , typeAnnos , false ) ; ts . append ( at ) ; } else { ts . append ( qi ) ; } } return ts . toList ( ) ; }
QualidentList = [Annotations] Qualident {"," [Annotations] Qualident}