if ((dot = peekChar() == '.'))
if ((dot = (peekChar() == '.')) == true)
    int readFetch(List<ImapPartSpecifier> parts) throws ImapParseException {        boolean list = peekChar() == '(';        int attributes = 0;        if (list)  skipChar('(');        do {            String item = readContent(FETCH_CHARS).toUpperCase();            if (!list && item.equals("ALL"))        attributes = ImapHandler.FETCH_ALL;            else if (!list && item.equals("FULL"))  attributes = ImapHandler.FETCH_FULL;            else if (!list && item.equals("FAST"))  attributes = ImapHandler.FETCH_FAST;            else if (item.equals("BODY") && peekChar() != '[')  attributes |= ImapHandler.FETCH_BODY;            else if (item.equals("BODYSTRUCTURE"))  attributes |= ImapHandler.FETCH_BODYSTRUCTURE;            else if (item.equals("ENVELOPE"))       attributes |= ImapHandler.FETCH_ENVELOPE;            else if (item.equals("FLAGS"))          attributes |= ImapHandler.FETCH_FLAGS;            else if (item.equals("INTERNALDATE"))   attributes |= ImapHandler.FETCH_INTERNALDATE;            else if (item.equals("UID"))            attributes |= ImapHandler.FETCH_UID;            else if (item.equals("RFC822.SIZE"))    attributes |= ImapHandler.FETCH_RFC822_SIZE;            else if (item.equals("RFC822.HEADER"))  parts.add(new ImapPartSpecifier(item, "", "HEADER"));            else if (item.equals("RFC822")) {                attributes |= ImapHandler.FETCH_MARK_READ;                parts.add(new ImapPartSpecifier(item, "", ""));            } else if (item.equals("RFC822.TEXT")) {                attributes |= ImapHandler.FETCH_MARK_READ;                parts.add(new ImapPartSpecifier(item, "", "TEXT"));            } else if (item.equals("BINARY.SIZE")) {                String sectionPart = "";                boolean dot = false;                skipChar('[');                while (Character.isDigit((char) peekChar()) || dot) {                    sectionPart += (sectionPart.equals("") ? "" : ".") + readNumber();                    if ((dot = peekChar() == '.'))                        skipChar('.');                }                skipChar(']');                parts.add(new ImapPartSpecifier(item, sectionPart, ""));            } else if (item.equals("BODY") || item.equals("BODY.PEEK") || item.equals("BINARY") || item.equals("BINARY.PEEK")) {                boolean binary = item.startsWith("BINARY");                if (!item.endsWith(".PEEK"))                    attributes |= ImapHandler.FETCH_MARK_READ;                String sectionPart = "", sectionText = "";                int partialStart = -1, partialCount = -1;                List<String> headers = null;                boolean done = false;                skipChar('[');                while (Character.isDigit((char) peekChar())) {                    sectionPart += (sectionPart.equals("") ? "" : ".") + readNumber();                    if (!(done = (peekChar() != '.')))                        skipChar('.');                }                if (!done && peekChar() != ']') {                    if (binary)                        throw new ImapParseException(mTag, "section-text not permitted for BINARY");                    sectionText = readAtom();                    if (sectionText.equals("HEADER.FIELDS") || sectionText.equals("HEADER.FIELDS.NOT")) {                        headers = new ArrayList<String>();                        skipSpace();  skipChar('(');                        while (peekChar() != ')') {                            if (!headers.isEmpty())  skipSpace();                            headers.add(readAstring().toUpperCase());                        }                        if (headers.isEmpty())                            throw new ImapParseException(mTag, "header-list may not be empty");                        skipChar(')');                    } else if (sectionText.equals("MIME")) {                        if (sectionPart.equals(""))                            throw new ImapParseException(mTag, "\"MIME\" is not a valid section-spec");                    } else if (!sectionText.equals("HEADER") && !sectionText.equals("TEXT"))                        throw new ImapParseException(mTag, "unknown section-text \"" + sectionText + '"');                }                skipChar(']');                if (peekChar() == '<') {                    try {                        skipChar('<');  partialStart = Integer.parseInt(readNumber());                        skipChar('.');  partialCount = Integer.parseInt(readNumber());  skipChar('>');                    } catch (NumberFormatException e) {                        throw new ImapParseException(mTag, "invalid partial fetch specifier");                    }                }                ImapPartSpecifier pspec = new ImapPartSpecifier(binary ? "BINARY" : "BODY", sectionPart, sectionText, partialStart, partialCount);                pspec.setHeaders(headers);                parts.add(pspec);            } else                throw new ImapParseException(mTag, "unknown FETCH attribute \"" + item + '"');            if (list && peekChar() != ')')  skipSpace();        } while (list && peekChar() != ')');        if (list)  skipChar(')');        return attributes;    }