if (!mStartedTLS) { sendNO(tag, "cleartext logins disabled"); return CONTINUE_PROCESSING; }
    boolean doAUTHENTICATE(String tag, String mechanism, byte[] response) throws IOException {        if (!checkState(tag, ImapSession.STATE_NOT_AUTHENTICATED))            return CONTINUE_PROCESSING;        boolean finished = false;        if (mechanism.equals("PLAIN")) {            // RFC 2595 6: "The PLAIN SASL mechanism MUST NOT be advertised or used            //              unless a strong encryption layer (such as the provided by TLS)            //              is active or backwards compatibility dictates otherwise."//            if (!mStartedTLS) {//                sendNO(tag, "cleartext logins disabled");//                return CONTINUE_PROCESSING;//            }            mAuthenticator = new AuthPlain(tag);        } else {            // no other AUTHENTICATE mechanisms are supported yet            sendNO(tag, "mechanism not supported");            return CONTINUE_PROCESSING;        }        // draft-siemborski-imap-sasl-initial-response:        //      "This extension adds an optional second argument to the AUTHENTICATE        //       command that is defined in Section 6.2.2 of [IMAP4].  If this second        //       argument is present, it represents the contents of the "initial        //       client response" defined in section 5.1 of [SASL]."        if (response != null)            finished = mAuthenticator.handle(response);        if (finished)            mAuthenticator = null;        else            sendContinuation();        return CONTINUE_PROCESSING;    }