public static ImapToken Create(ImapTokenType type, ByteArrayBuilder builder) { string value; if (type == ImapTokenType.Flag) { foreach (var token in CommonMessageFlagTokens) { value = (string)token.Value; if (builder.Equals(value, true)) { return(token); } } } else if (builder.Equals("NIL", true)) { foreach (var token in NilTokens) { value = (string)token.Value; if (builder.Equals(value)) { return(token); } } var nil = new ImapToken(ImapTokenType.Nil, builder.ToString()); NilTokens.Add(nil); return(nil); } else { if (builder.Equals("FETCH", false)) { return(Fetch); } if (builder.Equals("BODY", false)) { return(Body); } if (builder.Equals("BODYSTRUCTURE", false)) { return(BodyStructure); } if (builder.Equals("ENVELOPE", false)) { return(Envelope); } if (builder.Equals("FLAGS", false)) { return(Flags); } if (builder.Equals("INTERNALDATE", false)) { return(InternalDate); } if (builder.Equals("MODSEQ", false)) { return(ModSeq); } if (builder.Equals("RFC822.SIZE", false)) { return(Rfc822Size); } if (builder.Equals("UID", false)) { return(Uid); } if (builder.Equals("X-GM-LABELS", false)) { return(XGMLabels); } if (builder.Equals("X-GM-MSGID", false)) { return(XGMMsgId); } if (builder.Equals("X-GM-THRID", false)) { return(XGMThrId); } } value = builder.ToString(); return(new ImapToken(type, value)); }