private Name createNameNode(boolean checkActivation, int token) {
        int beg = ts.tokenBeg;
        String s = ts.getString();
        int lineno = ts.lineno;
        if (!"".equals(prevNameTokenString)) {
            beg = prevNameTokenStart;
            s = prevNameTokenString;
            lineno = prevNameTokenLineno;
            prevNameTokenStart = 0;
            prevNameTokenString = "";
            prevNameTokenLineno = 0;
        }
        if (s == null) {
            if (compilerEnv.isIdeMode()) {
                s = "";
            } else {
                codeBug();
            }
        }
        Name name = new Name(beg, s);
        name.setLineno(lineno);
        if (checkActivation) {
            checkActivationName(s, token);
        }
        return name;
    }
private Name createNameNode ( boolean checkActivation , int token ) { int beg = ts . tokenBeg ; String s = ts . getString ( ) ; int lineno = ts . lineno ; if ( ! "" . equals ( prevNameTokenString ) ) { beg = prevNameTokenStart ; s = prevNameTokenString ; lineno = prevNameTokenLineno ; prevNameTokenStart = 0 ; prevNameTokenString = "" ; prevNameTokenLineno = 0 ; } if ( s == null ) { if ( compilerEnv . isIdeMode ( ) ) { s = "" ; } else { codeBug ( ) ; } } Name name = new Name ( beg , s ) ; name . setLineno ( lineno ) ; if ( checkActivation ) { checkActivationName ( s , token ) ; } return name ; }
Create a {@code Name} node using the token info from the
last scanned name.  In some cases we need to either synthesize
a name node, or we lost the name token information by peeking.
If the {@code token} parameter is not {@link Token#NAME}, then
we use token info saved in instance vars.