private boolean localAtomAllowed(char c) {
        if (Scanners.isAlnum(c) || Scanners.isNonAscii(c)) {
            return true;
        }
        switch (c) {
            case '!':
            case '#':
            case '$':
            case '%':
            case '&':
            case '\'':
            case '*':
            case '+':
            case '-':
            case '/':
            case '=':
            case '?':
            case '^':
            case '_':
            case '`':
            case '{':
            case '|':
            case '}':
            case '~':
                return true;
        }
        return false;
    }
private boolean localAtomAllowed ( char c ) { if ( Scanners . isAlnum ( c ) || Scanners . isNonAscii ( c ) ) { return true ; } switch ( c ) { case '!' : case '#' : case '$' : case '%' : case '&' : case '\'' : case '*' : case '+' : case '-' : case '/' : case '=' : case '?' : case '^' : case '_' : case '`' : case '{' : case '|' : case '}' : case '~' : return true ; } return false ; }
See "Atom" in RFC 5321, "atext" in RFC 5322