/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl/nsIMsgFolder.idl
 */

#ifndef __gen_nsIMsgFolder_h__
#define __gen_nsIMsgFolder_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

#ifndef __gen_nsIFolderListener_h__
#include "nsIFolderListener.h"
#endif

#ifndef __gen_nsIMsgIncomingServer_h__
#include "nsIMsgIncomingServer.h"
#endif

#ifndef __gen_nsIMsgCopyServiceListener_h__
#include "nsIMsgCopyServiceListener.h"
#endif

#ifndef __gen_nsIUrlListener_h__
#include "nsIUrlListener.h"
#endif

#ifndef __gen_nsISimpleEnumerator_h__
#include "nsISimpleEnumerator.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIMsgDBHdr; /* forward declaration */

class nsIMsgWindow; /* forward declaration */

class nsIMsgDatabase; /* forward declaration */

class nsIDBFolderInfo; /* forward declaration */

class nsIMsgFilterList; /* forward declaration */

class nsIFile; /* forward declaration */

class nsIOutputStream; /* forward declaration */

class nsIInputStream; /* forward declaration */

class nsIFile; /* forward declaration */

class nsIMsgIdentity; /* forward declaration */

class nsIMsgThread; /* forward declaration */

class nsIArray; /* forward declaration */

class nsIMutableArray; /* forward declaration */

class nsIMsgPluggableStore; /* forward declaration */

typedef int32_t  nsMsgBiffState;

typedef int32_t  nsMsgDispositionState;


/* starting interface:    nsIMsgFolder */
#define NS_IMSGFOLDER_IID_STR "5d253ba2-42aa-43a7-b584-0059855ababf"

#define NS_IMSGFOLDER_IID \
  {0x5d253ba2, 0x42aa, 0x43a7, \
    { 0xb5, 0x84, 0x00, 0x59, 0x85, 0x5a, 0xba, 0xbf }}

class NS_NO_VTABLE nsIMsgFolder : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGFOLDER_IID)

  enum {
    nsMsgBiffState_NewMail = 0,
    nsMsgBiffState_NoMail = 1,
    nsMsgBiffState_Unknown = 2
  };

  /* readonly attribute nsISimpleEnumerator messages; */
  NS_IMETHOD GetMessages(nsISimpleEnumerator * *aMessages) = 0;

  /* void startFolderLoading (); */
  NS_IMETHOD StartFolderLoading(void) = 0;

  /* void endFolderLoading (); */
  NS_IMETHOD EndFolderLoading(void) = 0;

  /* void updateFolder (in nsIMsgWindow aWindow); */
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow) = 0;

  /* readonly attribute AString prettiestName; */
  NS_IMETHOD GetPrettiestName(nsAString & aPrettiestName) = 0;

  /* readonly attribute ACString folderURL; */
  NS_IMETHOD GetFolderURL(nsACString & aFolderURL) = 0;

  /* readonly attribute boolean showDeletedMessages; */
  NS_IMETHOD GetShowDeletedMessages(bool *aShowDeletedMessages) = 0;

  /* readonly attribute nsIMsgIncomingServer server; */
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer) = 0;

  /* readonly attribute boolean isServer; */
  NS_IMETHOD GetIsServer(bool *aIsServer) = 0;

  /* readonly attribute boolean canSubscribe; */
  NS_IMETHOD GetCanSubscribe(bool *aCanSubscribe) = 0;

  /* readonly attribute boolean canFileMessages; */
  NS_IMETHOD GetCanFileMessages(bool *aCanFileMessages) = 0;

  /* readonly attribute boolean noSelect; */
  NS_IMETHOD GetNoSelect(bool *aNoSelect) = 0;

  /* readonly attribute boolean imapShared; */
  NS_IMETHOD GetImapShared(bool *aImapShared) = 0;

  /* readonly attribute boolean canDeleteMessages; */
  NS_IMETHOD GetCanDeleteMessages(bool *aCanDeleteMessages) = 0;

  /* readonly attribute boolean canCreateSubfolders; */
  NS_IMETHOD GetCanCreateSubfolders(bool *aCanCreateSubfolders) = 0;

  /* readonly attribute boolean canRename; */
  NS_IMETHOD GetCanRename(bool *aCanRename) = 0;

  /* readonly attribute boolean canCompact; */
  NS_IMETHOD GetCanCompact(bool *aCanCompact) = 0;

  /* readonly attribute nsIMsgFolder rootFolder; */
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder) = 0;

  /* nsIMsgFilterList getFilterList (in nsIMsgWindow msgWindow); */
  NS_IMETHOD GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval) = 0;

  /* void setFilterList (in nsIMsgFilterList filterList); */
  NS_IMETHOD SetFilterList(nsIMsgFilterList *filterList) = 0;

  /* nsIMsgFilterList getEditableFilterList (in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD GetEditableFilterList(nsIMsgWindow *aMsgWindow, nsIMsgFilterList * *_retval) = 0;

  /* void setEditableFilterList (in nsIMsgFilterList aFilterList); */
  NS_IMETHOD SetEditableFilterList(nsIMsgFilterList *aFilterList) = 0;

  /* void ForceDBClosed (); */
  NS_IMETHOD ForceDBClosed(void) = 0;

  /* void closeAndBackupFolderDB (in ACString newName); */
  NS_IMETHOD CloseAndBackupFolderDB(const nsACString & newName) = 0;

  /* void Delete (); */
  NS_IMETHOD Delete(void) = 0;

  /* void deleteSubFolders (in nsIArray folders, in nsIMsgWindow msgWindow); */
  NS_IMETHOD DeleteSubFolders(nsIArray *folders, nsIMsgWindow *msgWindow) = 0;

  /* void propagateDelete (in nsIMsgFolder folder, in boolean deleteStorage, in nsIMsgWindow msgWindow); */
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, bool deleteStorage, nsIMsgWindow *msgWindow) = 0;

  /* void recursiveDelete (in boolean deleteStorage, in nsIMsgWindow msgWindow); */
  NS_IMETHOD RecursiveDelete(bool deleteStorage, nsIMsgWindow *msgWindow) = 0;

  /* void createSubfolder (in AString folderName, in nsIMsgWindow msgWindow); */
  NS_IMETHOD CreateSubfolder(const nsAString & folderName, nsIMsgWindow *msgWindow) = 0;

  /* nsIMsgFolder addSubfolder (in AString aFolderName); */
  NS_IMETHOD AddSubfolder(const nsAString & aFolderName, nsIMsgFolder * *_retval) = 0;

  /* void createStorageIfMissing (in nsIUrlListener urlListener); */
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener) = 0;

  /* void compact (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) = 0;

  /* void compactAll (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow, in boolean aCompactOfflineAlso); */
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, bool aCompactOfflineAlso) = 0;

  /* void compactAllOfflineStores (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow, in nsIArray aOfflineFolderArray); */
  NS_IMETHOD CompactAllOfflineStores(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsIArray *aOfflineFolderArray) = 0;

  /* void emptyTrash (in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener); */
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) = 0;

  /* void rename (in AString name, in nsIMsgWindow msgWindow); */
  NS_IMETHOD Rename(const nsAString & name, nsIMsgWindow *msgWindow) = 0;

  /* void renameSubFolders (in nsIMsgWindow msgWindow, in nsIMsgFolder oldFolder); */
  NS_IMETHOD RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder) = 0;

  /* AString generateUniqueSubfolderName (in AString prefix, in nsIMsgFolder otherFolder); */
  NS_IMETHOD GenerateUniqueSubfolderName(const nsAString & prefix, nsIMsgFolder *otherFolder, nsAString & _retval) = 0;

  /* void updateSummaryTotals (in boolean force); */
  NS_IMETHOD UpdateSummaryTotals(bool force) = 0;

  /* void summaryChanged (); */
  NS_IMETHOD SummaryChanged(void) = 0;

  /* long getNumUnread (in boolean deep); */
  NS_IMETHOD GetNumUnread(bool deep, int32_t *_retval) = 0;

  /* long getTotalMessages (in boolean deep); */
  NS_IMETHOD GetTotalMessages(bool deep, int32_t *_retval) = 0;

  /* readonly attribute long numPendingUnread; */
  NS_IMETHOD GetNumPendingUnread(int32_t *aNumPendingUnread) = 0;

  /* readonly attribute long numPendingTotalMessages; */
  NS_IMETHOD GetNumPendingTotalMessages(int32_t *aNumPendingTotalMessages) = 0;

  /* void changeNumPendingUnread (in long delta); */
  NS_IMETHOD ChangeNumPendingUnread(int32_t delta) = 0;

  /* void changeNumPendingTotalMessages (in long delta); */
  NS_IMETHOD ChangeNumPendingTotalMessages(int32_t delta) = 0;

  /* attribute boolean hasNewMessages; */
  NS_IMETHOD GetHasNewMessages(bool *aHasNewMessages) = 0;
  NS_IMETHOD SetHasNewMessages(bool aHasNewMessages) = 0;

  /* readonly attribute boolean hasFolderOrSubfolderNewMessages; */
  NS_IMETHOD GetHasFolderOrSubfolderNewMessages(bool *aHasFolderOrSubfolderNewMessages) = 0;

  /* readonly attribute nsIMsgDBHdr firstNewMessage; */
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage) = 0;

  /* void clearNewMessages (); */
  NS_IMETHOD ClearNewMessages(void) = 0;

  /* readonly attribute long long expungedBytes; */
  NS_IMETHOD GetExpungedBytes(int64_t *aExpungedBytes) = 0;

  /* readonly attribute boolean deletable; */
  NS_IMETHOD GetDeletable(bool *aDeletable) = 0;

  /* readonly attribute boolean displayRecipients; */
  NS_IMETHOD GetDisplayRecipients(bool *aDisplayRecipients) = 0;

  /* readonly attribute boolean manyHeadersToDownload; */
  NS_IMETHOD GetManyHeadersToDownload(bool *aManyHeadersToDownload) = 0;

  /* readonly attribute ACString relativePathName; */
  NS_IMETHOD GetRelativePathName(nsACString & aRelativePathName) = 0;

  /* attribute long long sizeOnDisk; */
  NS_IMETHOD GetSizeOnDisk(int64_t *aSizeOnDisk) = 0;
  NS_IMETHOD SetSizeOnDisk(int64_t aSizeOnDisk) = 0;

  /* readonly attribute ACString username; */
  NS_IMETHOD GetUsername(nsACString & aUsername) = 0;

  /* readonly attribute ACString hostname; */
  NS_IMETHOD GetHostname(nsACString & aHostname) = 0;

  /* void setFlag (in unsigned long flag); */
  NS_IMETHOD SetFlag(uint32_t flag) = 0;

  /* void clearFlag (in unsigned long flag); */
  NS_IMETHOD ClearFlag(uint32_t flag) = 0;

  /* boolean getFlag (in unsigned long flag); */
  NS_IMETHOD GetFlag(uint32_t flag, bool *_retval) = 0;

  /* void toggleFlag (in unsigned long flag); */
  NS_IMETHOD ToggleFlag(uint32_t flag) = 0;

  /* void onFlagChange (in unsigned long flag); */
  NS_IMETHOD OnFlagChange(uint32_t flag) = 0;

  /* attribute unsigned long flags; */
  NS_IMETHOD GetFlags(uint32_t *aFlags) = 0;
  NS_IMETHOD SetFlags(uint32_t aFlags) = 0;

  /* nsIMsgFolder getFolderWithFlags (in unsigned long flags); */
  NS_IMETHOD GetFolderWithFlags(uint32_t flags, nsIMsgFolder * *_retval) = 0;

  /* nsIArray getFoldersWithFlags (in unsigned long flags); */
  NS_IMETHOD GetFoldersWithFlags(uint32_t flags, nsIArray * *_retval) = 0;

  /* void listFoldersWithFlags (in unsigned long flags, in nsIMutableArray folders); */
  NS_IMETHOD ListFoldersWithFlags(uint32_t flags, nsIMutableArray *folders) = 0;

  /* boolean isSpecialFolder (in unsigned long flags, [optional] in boolean checkAncestors); */
  NS_IMETHOD IsSpecialFolder(uint32_t flags, bool checkAncestors, bool *_retval) = 0;

  /* ACString getUriForMsg (in nsIMsgDBHdr msgHdr); */
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, nsACString & _retval) = 0;

  /* void deleteMessages (in nsIArray messages, in nsIMsgWindow msgWindow, in boolean deleteStorage, in boolean isMove, in nsIMsgCopyServiceListener listener, in boolean allowUndo); */
  NS_IMETHOD DeleteMessages(nsIArray *messages, nsIMsgWindow *msgWindow, bool deleteStorage, bool isMove, nsIMsgCopyServiceListener *listener, bool allowUndo) = 0;

  /* void copyMessages (in nsIMsgFolder srcFolder, in nsIArray messages, in boolean isMove, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener, in boolean isFolder, in boolean allowUndo); */
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, bool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, bool isFolder, bool allowUndo) = 0;

  /* void copyFolder (in nsIMsgFolder srcFolder, in boolean isMoveFolder, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
  NS_IMETHOD CopyFolder(nsIMsgFolder *srcFolder, bool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) = 0;

  /* void copyFileMessage (in nsIFile file, in nsIMsgDBHdr msgToReplace, in boolean isDraft, in unsigned long newMsgFlags, in ACString aKeywords, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
  NS_IMETHOD CopyFileMessage(nsIFile *file, nsIMsgDBHdr *msgToReplace, bool isDraft, uint32_t newMsgFlags, const nsACString & aKeywords, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) = 0;

  /* void acquireSemaphore (in nsISupports semHolder); */
  NS_IMETHOD AcquireSemaphore(nsISupports *semHolder) = 0;

  /* void releaseSemaphore (in nsISupports semHolder); */
  NS_IMETHOD ReleaseSemaphore(nsISupports *semHolder) = 0;

  /* boolean testSemaphore (in nsISupports semHolder); */
  NS_IMETHOD TestSemaphore(nsISupports *semHolder, bool *_retval) = 0;

  /* readonly attribute boolean locked; */
  NS_IMETHOD GetLocked(bool *aLocked) = 0;

  /* void getNewMessages (in nsIMsgWindow aWindow, in nsIUrlListener aListener); */
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow, nsIUrlListener *aListener) = 0;

  /* void writeToFolderCache (in nsIMsgFolderCache folderCache, in boolean deep); */
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, bool deep) = 0;

  /* attribute ACString charset; */
  NS_IMETHOD GetCharset(nsACString & aCharset) = 0;
  NS_IMETHOD SetCharset(const nsACString & aCharset) = 0;

  /* attribute boolean charsetOverride; */
  NS_IMETHOD GetCharsetOverride(bool *aCharsetOverride) = 0;
  NS_IMETHOD SetCharsetOverride(bool aCharsetOverride) = 0;

  /* attribute unsigned long biffState; */
  NS_IMETHOD GetBiffState(uint32_t *aBiffState) = 0;
  NS_IMETHOD SetBiffState(uint32_t aBiffState) = 0;

  /* long getNumNewMessages (in boolean deep); */
  NS_IMETHOD GetNumNewMessages(bool deep, int32_t *_retval) = 0;

  /* void setNumNewMessages (in long numNewMessages); */
  NS_IMETHOD SetNumNewMessages(int32_t numNewMessages) = 0;

  /* attribute boolean gettingNewMessages; */
  NS_IMETHOD GetGettingNewMessages(bool *aGettingNewMessages) = 0;
  NS_IMETHOD SetGettingNewMessages(bool aGettingNewMessages) = 0;

  /* attribute nsIFile filePath; */
  NS_IMETHOD GetFilePath(nsIFile * *aFilePath) = 0;
  NS_IMETHOD SetFilePath(nsIFile *aFilePath) = 0;

  /* readonly attribute nsIFile summaryFile; */
  NS_IMETHOD GetSummaryFile(nsIFile * *aSummaryFile) = 0;

  /* readonly attribute ACString baseMessageURI; */
  NS_IMETHOD GetBaseMessageURI(nsACString & aBaseMessageURI) = 0;

  /* ACString generateMessageURI (in nsMsgKey msgKey); */
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, nsACString & _retval) = 0;

  enum {
    nsMsgDispositionState_None = -1,
    nsMsgDispositionState_Replied = 0,
    nsMsgDispositionState_Forwarded = 1
  };

  /* void addMessageDispositionState (in nsIMsgDBHdr aMessage, in nsMsgDispositionState aDispositionFlag); */
  NS_IMETHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag) = 0;

  /* void markMessagesRead (in nsIArray messages, in boolean markRead); */
  NS_IMETHOD MarkMessagesRead(nsIArray *messages, bool markRead) = 0;

  /* void markAllMessagesRead (in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD MarkAllMessagesRead(nsIMsgWindow *aMsgWindow) = 0;

  /* void markMessagesFlagged (in nsIArray messages, in boolean markFlagged); */
  NS_IMETHOD MarkMessagesFlagged(nsIArray *messages, bool markFlagged) = 0;

  /* void markThreadRead (in nsIMsgThread thread); */
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread) = 0;

  /* void setLabelForMessages (in nsIArray messages, in nsMsgLabelValue label); */
  NS_IMETHOD SetLabelForMessages(nsIArray *messages, nsMsgLabelValue label) = 0;

  /* attribute nsIMsgDatabase msgDatabase; */
  NS_IMETHOD GetMsgDatabase(nsIMsgDatabase * *aMsgDatabase) = 0;
  NS_IMETHOD SetMsgDatabase(nsIMsgDatabase *aMsgDatabase) = 0;

  /* readonly attribute boolean databaseOpen; */
  NS_IMETHOD GetDatabaseOpen(bool *aDatabaseOpen) = 0;

  /* nsIMsgDatabase getBackupMsgDatabase (); */
  NS_IMETHOD GetBackupMsgDatabase(nsIMsgDatabase * *_retval) = 0;

  /* void removeBackupMsgDatabase (); */
  NS_IMETHOD RemoveBackupMsgDatabase(void) = 0;

  /* void openBackupMsgDatabase (); */
  NS_IMETHOD OpenBackupMsgDatabase(void) = 0;

  /* nsIMsgDatabase getDBFolderInfoAndDB (out nsIDBFolderInfo folderInfo); */
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo * *folderInfo, nsIMsgDatabase * *_retval) = 0;

  /* nsIMsgDBHdr GetMessageHeader (in nsMsgKey msgKey); */
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) = 0;

  /* readonly attribute boolean supportsOffline; */
  NS_IMETHOD GetSupportsOffline(bool *aSupportsOffline) = 0;

  /* boolean shouldStoreMsgOffline (in nsMsgKey msgKey); */
  NS_IMETHOD ShouldStoreMsgOffline(nsMsgKey msgKey, bool *_retval) = 0;

  /* boolean hasMsgOffline (in nsMsgKey msgKey); */
  NS_IMETHOD HasMsgOffline(nsMsgKey msgKey, bool *_retval) = 0;

  /* nsIInputStream getOfflineFileStream (in nsMsgKey aMsgKey, out long long aOffset, out unsigned long aSize); */
  NS_IMETHOD GetOfflineFileStream(nsMsgKey aMsgKey, int64_t *aOffset, uint32_t *aSize, nsIInputStream * *_retval) = 0;

  /* nsIMsgFolder GetOfflineMsgFolder (in nsMsgKey msgKey); */
  NS_IMETHOD GetOfflineMsgFolder(nsMsgKey msgKey, nsIMsgFolder * *_retval) = 0;

  /* nsIOutputStream getOfflineStoreOutputStream (in nsIMsgDBHdr aHdr); */
  NS_IMETHOD GetOfflineStoreOutputStream(nsIMsgDBHdr *aHdr, nsIOutputStream * *_retval) = 0;

  /* nsIInputStream getMsgInputStream (in nsIMsgDBHdr aHdr, out boolean aReusable); */
  NS_IMETHOD GetMsgInputStream(nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval) = 0;

  /* void DownloadMessagesForOffline (in nsIArray messages, in nsIMsgWindow window); */
  NS_IMETHOD DownloadMessagesForOffline(nsIArray *messages, nsIMsgWindow *window) = 0;

  /* nsIMsgFolder getChildWithURI (in ACString uri, in boolean deep, in boolean caseInsensitive); */
  NS_IMETHOD GetChildWithURI(const nsACString & uri, bool deep, bool caseInsensitive, nsIMsgFolder * *_retval) = 0;

  /* void downloadAllForOffline (in nsIUrlListener listener, in nsIMsgWindow window); */
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window) = 0;

  enum {
    allMessageCountNotifications = 0U
  };

  /* void enableNotifications (in long notificationType, in boolean enable, in boolean dbBatching); */
  NS_IMETHOD EnableNotifications(int32_t notificationType, bool enable, bool dbBatching) = 0;

  /* boolean isCommandEnabled (in ACString command); */
  NS_IMETHOD IsCommandEnabled(const nsACString & command, bool *_retval) = 0;

  /* boolean matchOrChangeFilterDestination (in nsIMsgFolder folder, in boolean caseInsensitive); */
  NS_IMETHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, bool caseInsensitive, bool *_retval) = 0;

  /* boolean confirmFolderDeletionForFilter (in nsIMsgWindow msgWindow); */
  NS_IMETHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, bool *_retval) = 0;

  /* void alertFilterChanged (in nsIMsgWindow msgWindow); */
  NS_IMETHOD AlertFilterChanged(nsIMsgWindow *msgWindow) = 0;

  /* void throwAlertMsg (in string msgName, in nsIMsgWindow msgWindow); */
  NS_IMETHOD ThrowAlertMsg(const char * msgName, nsIMsgWindow *msgWindow) = 0;

  /* AString getStringWithFolderNameFromBundle (in string msgName); */
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char * msgName, nsAString & _retval) = 0;

  /* void notifyCompactCompleted (); */
  NS_IMETHOD NotifyCompactCompleted(void) = 0;

  /* long compareSortKeys (in nsIMsgFolder msgFolder); */
  NS_IMETHOD CompareSortKeys(nsIMsgFolder *msgFolder, int32_t *_retval) = 0;

  /* void getSortKey (out unsigned long length, [array, size_is (length), retval] out octet key); */
  NS_IMETHOD GetSortKey(uint32_t *length, uint8_t **key) = 0;

  /* attribute nsIMsgRetentionSettings retentionSettings; */
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings) = 0;
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings *aRetentionSettings) = 0;

  /* attribute nsIMsgDownloadSettings downloadSettings; */
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings) = 0;
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings *aDownloadSettings) = 0;

  /* boolean callFilterPlugins (in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD CallFilterPlugins(nsIMsgWindow *aMsgWindow, bool *_retval) = 0;

  /* attribute long sortOrder; */
  NS_IMETHOD GetSortOrder(int32_t *aSortOrder) = 0;
  NS_IMETHOD SetSortOrder(int32_t aSortOrder) = 0;

  /* attribute nsIDBFolderInfo dBTransferInfo; */
  NS_IMETHOD GetDBTransferInfo(nsIDBFolderInfo * *aDBTransferInfo) = 0;
  NS_IMETHOD SetDBTransferInfo(nsIDBFolderInfo *aDBTransferInfo) = 0;

  /* ACString getStringProperty (in string propertyName); */
  NS_IMETHOD GetStringProperty(const char * propertyName, nsACString & _retval) = 0;

  /* void setStringProperty (in string propertyName, in ACString propertyValue); */
  NS_IMETHOD SetStringProperty(const char * propertyName, const nsACString & propertyValue) = 0;

  /* attribute nsMsgKey lastMessageLoaded; */
  NS_IMETHOD GetLastMessageLoaded(nsMsgKey *aLastMessageLoaded) = 0;
  NS_IMETHOD SetLastMessageLoaded(nsMsgKey aLastMessageLoaded) = 0;

  /* readonly attribute ACString URI; */
  NS_IMETHOD GetURI(nsACString & aURI) = 0;

  /* attribute AString name; */
  NS_IMETHOD GetName(nsAString & aName) = 0;
  NS_IMETHOD SetName(const nsAString & aName) = 0;

  /* attribute AString prettyName; */
  NS_IMETHOD GetPrettyName(nsAString & aPrettyName) = 0;
  NS_IMETHOD SetPrettyName(const nsAString & aPrettyName) = 0;

  /* readonly attribute AString abbreviatedName; */
  NS_IMETHOD GetAbbreviatedName(nsAString & aAbbreviatedName) = 0;

  /* attribute nsIMsgFolder parent; */
  NS_IMETHOD GetParent(nsIMsgFolder * *aParent) = 0;
  NS_IMETHOD SetParent(nsIMsgFolder *aParent) = 0;

  /* readonly attribute nsISimpleEnumerator subFolders; */
  NS_IMETHOD GetSubFolders(nsISimpleEnumerator * *aSubFolders) = 0;

  /* readonly attribute boolean hasSubFolders; */
  NS_IMETHOD GetHasSubFolders(bool *aHasSubFolders) = 0;

  /* readonly attribute unsigned long numSubFolders; */
  NS_IMETHOD GetNumSubFolders(uint32_t *aNumSubFolders) = 0;

  /* boolean isAncestorOf (in nsIMsgFolder folder); */
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, bool *_retval) = 0;

  /* boolean containsChildNamed (in AString name); */
  NS_IMETHOD ContainsChildNamed(const nsAString & name, bool *_retval) = 0;

  /* nsIMsgFolder getChildNamed (in AString aName); */
  NS_IMETHOD GetChildNamed(const nsAString & aName, nsIMsgFolder * *_retval) = 0;

  /* nsIMsgFolder findSubFolder (in ACString escapedSubFolderName); */
  NS_IMETHOD FindSubFolder(const nsACString & escapedSubFolderName, nsIMsgFolder * *_retval) = 0;

  /* void AddFolderListener (in nsIFolderListener listener); */
  NS_IMETHOD AddFolderListener(nsIFolderListener *listener) = 0;

  /* void RemoveFolderListener (in nsIFolderListener listener); */
  NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener) = 0;

  /* void NotifyPropertyChanged (in nsIAtom property, in ACString oldValue, in ACString newValue); */
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const nsACString & oldValue, const nsACString & newValue) = 0;

  /* void NotifyIntPropertyChanged (in nsIAtom property, in long long oldValue, in long long newValue); */
  NS_IMETHOD NotifyIntPropertyChanged(nsIAtom *property, int64_t oldValue, int64_t newValue) = 0;

  /* void NotifyBoolPropertyChanged (in nsIAtom property, in boolean oldValue, in boolean newValue); */
  NS_IMETHOD NotifyBoolPropertyChanged(nsIAtom *property, bool oldValue, bool newValue) = 0;

  /* void NotifyPropertyFlagChanged (in nsIMsgDBHdr item, in nsIAtom property, in unsigned long oldValue, in unsigned long newValue); */
  NS_IMETHOD NotifyPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, uint32_t oldValue, uint32_t newValue) = 0;

  /* void NotifyUnicharPropertyChanged (in nsIAtom property, in AString oldValue, in AString newValue); */
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const nsAString & oldValue, const nsAString & newValue) = 0;

  /* void NotifyItemAdded (in nsISupports item); */
  NS_IMETHOD NotifyItemAdded(nsISupports *item) = 0;

  /* void NotifyItemRemoved (in nsISupports item); */
  NS_IMETHOD NotifyItemRemoved(nsISupports *item) = 0;

  /* void NotifyFolderEvent (in nsIAtom event); */
  NS_IMETHOD NotifyFolderEvent(nsIAtom *event) = 0;

  /* readonly attribute nsIArray descendants; */
  NS_IMETHOD GetDescendants(nsIArray * *aDescendants) = 0;

  /* void ListDescendants (in nsIMutableArray aDescendants); */
  NS_IMETHOD ListDescendants(nsIMutableArray *aDescendants) = 0;

  /* void Shutdown (in boolean shutdownChildren); */
  NS_IMETHOD Shutdown(bool shutdownChildren) = 0;

  /* readonly attribute boolean inVFEditSearchScope; */
  NS_IMETHOD GetInVFEditSearchScope(bool *aInVFEditSearchScope) = 0;

  /* void setInVFEditSearchScope (in boolean aSearchThisFolder, in boolean aSetOnSubFolders); */
  NS_IMETHOD SetInVFEditSearchScope(bool aSearchThisFolder, bool aSetOnSubFolders) = 0;

  /* void copyDataToOutputStreamForAppend (in nsIInputStream aIStream, in long aLength, in nsIOutputStream outputStream); */
  NS_IMETHOD CopyDataToOutputStreamForAppend(nsIInputStream *aIStream, int32_t aLength, nsIOutputStream *outputStream) = 0;

  /* void copyDataDone (); */
  NS_IMETHOD CopyDataDone(void) = 0;

  /* void setJunkScoreForMessages (in nsIArray aMessages, in ACString aJunkScore); */
  NS_IMETHOD SetJunkScoreForMessages(nsIArray *aMessages, const nsACString & aJunkScore) = 0;

  /* void applyRetentionSettings (); */
  NS_IMETHOD ApplyRetentionSettings(void) = 0;

  /* boolean fetchMsgPreviewText ([array, size_is (aNumKeys)] in nsMsgKey aKeysToFetch, in unsigned long aNumKeys, in boolean aLocalOnly, in nsIUrlListener aUrlListener); */
  NS_IMETHOD FetchMsgPreviewText(nsMsgKey *aKeysToFetch, uint32_t aNumKeys, bool aLocalOnly, nsIUrlListener *aUrlListener, bool *_retval) = 0;

  /* void addKeywordsToMessages (in nsIArray aMessages, in ACString aKeywords); */
  NS_IMETHOD AddKeywordsToMessages(nsIArray *aMessages, const nsACString & aKeywords) = 0;

  /* void removeKeywordsFromMessages (in nsIArray aMessages, in ACString aKeywords); */
  NS_IMETHOD RemoveKeywordsFromMessages(nsIArray *aMessages, const nsACString & aKeywords) = 0;

  /* AUTF8String getMsgTextFromStream (in nsIInputStream aStream, in ACString aCharset, in unsigned long aBytesToRead, in unsigned long aMaxOutputLen, in boolean aCompressQuotes, in boolean aStripHTMLTags, out ACString aContentType); */
  NS_IMETHOD GetMsgTextFromStream(nsIInputStream *aStream, const nsACString & aCharset, uint32_t aBytesToRead, uint32_t aMaxOutputLen, bool aCompressQuotes, bool aStripHTMLTags, nsACString & aContentType, nsACString & _retval) = 0;

  /* AString convertMsgSnippetToPlainText (in AString aMessageText); */
  NS_IMETHOD ConvertMsgSnippetToPlainText(const nsAString & aMessageText, nsAString & _retval) = 0;

  /* readonly attribute nsIMsgIdentity customIdentity; */
  NS_IMETHOD GetCustomIdentity(nsIMsgIdentity * *aCustomIdentity) = 0;

  /* unsigned long getProcessingFlags (in nsMsgKey msgKey); */
  NS_IMETHOD GetProcessingFlags(nsMsgKey msgKey, uint32_t *_retval) = 0;

  /* void orProcessingFlags (in nsMsgKey msgKey, in unsigned long mask); */
  NS_IMETHOD OrProcessingFlags(nsMsgKey msgKey, uint32_t mask) = 0;

  /* void andProcessingFlags (in nsMsgKey msgKey, in unsigned long mask); */
  NS_IMETHOD AndProcessingFlags(nsMsgKey msgKey, uint32_t mask) = 0;

  /* ACString getInheritedStringProperty (in string propertyName); */
  NS_IMETHOD GetInheritedStringProperty(const char * propertyName, nsACString & _retval) = 0;

  /* void setForcePropertyEmpty (in string propertyName, in boolean aForcePropertyEmpty); */
  NS_IMETHOD SetForcePropertyEmpty(const char * propertyName, bool aForcePropertyEmpty) = 0;

  /* boolean getForcePropertyEmpty (in string propertyName); */
  NS_IMETHOD GetForcePropertyEmpty(const char * propertyName, bool *_retval) = 0;

  /* readonly attribute nsIMsgPluggableStore msgStore; */
  NS_IMETHOD GetMsgStore(nsIMsgPluggableStore * *aMsgStore) = 0;

  /* readonly attribute ACString incomingServerType; */
  NS_IMETHOD GetIncomingServerType(nsACString & aIncomingServerType) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgFolder, NS_IMSGFOLDER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGFOLDER \
  NS_IMETHOD GetMessages(nsISimpleEnumerator * *aMessages) override; \
  NS_IMETHOD StartFolderLoading(void) override; \
  NS_IMETHOD EndFolderLoading(void) override; \
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow) override; \
  NS_IMETHOD GetPrettiestName(nsAString & aPrettiestName) override; \
  NS_IMETHOD GetFolderURL(nsACString & aFolderURL) override; \
  NS_IMETHOD GetShowDeletedMessages(bool *aShowDeletedMessages) override; \
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer) override; \
  NS_IMETHOD GetIsServer(bool *aIsServer) override; \
  NS_IMETHOD GetCanSubscribe(bool *aCanSubscribe) override; \
  NS_IMETHOD GetCanFileMessages(bool *aCanFileMessages) override; \
  NS_IMETHOD GetNoSelect(bool *aNoSelect) override; \
  NS_IMETHOD GetImapShared(bool *aImapShared) override; \
  NS_IMETHOD GetCanDeleteMessages(bool *aCanDeleteMessages) override; \
  NS_IMETHOD GetCanCreateSubfolders(bool *aCanCreateSubfolders) override; \
  NS_IMETHOD GetCanRename(bool *aCanRename) override; \
  NS_IMETHOD GetCanCompact(bool *aCanCompact) override; \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder) override; \
  NS_IMETHOD GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval) override; \
  NS_IMETHOD SetFilterList(nsIMsgFilterList *filterList) override; \
  NS_IMETHOD GetEditableFilterList(nsIMsgWindow *aMsgWindow, nsIMsgFilterList * *_retval) override; \
  NS_IMETHOD SetEditableFilterList(nsIMsgFilterList *aFilterList) override; \
  NS_IMETHOD ForceDBClosed(void) override; \
  NS_IMETHOD CloseAndBackupFolderDB(const nsACString & newName) override; \
  NS_IMETHOD Delete(void) override; \
  NS_IMETHOD DeleteSubFolders(nsIArray *folders, nsIMsgWindow *msgWindow) override; \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, bool deleteStorage, nsIMsgWindow *msgWindow) override; \
  NS_IMETHOD RecursiveDelete(bool deleteStorage, nsIMsgWindow *msgWindow) override; \
  NS_IMETHOD CreateSubfolder(const nsAString & folderName, nsIMsgWindow *msgWindow) override; \
  NS_IMETHOD AddSubfolder(const nsAString & aFolderName, nsIMsgFolder * *_retval) override; \
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener) override; \
  NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) override; \
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, bool aCompactOfflineAlso) override; \
  NS_IMETHOD CompactAllOfflineStores(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsIArray *aOfflineFolderArray) override; \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) override; \
  NS_IMETHOD Rename(const nsAString & name, nsIMsgWindow *msgWindow) override; \
  NS_IMETHOD RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder) override; \
  NS_IMETHOD GenerateUniqueSubfolderName(const nsAString & prefix, nsIMsgFolder *otherFolder, nsAString & _retval) override; \
  NS_IMETHOD UpdateSummaryTotals(bool force) override; \
  NS_IMETHOD SummaryChanged(void) override; \
  NS_IMETHOD GetNumUnread(bool deep, int32_t *_retval) override; \
  NS_IMETHOD GetTotalMessages(bool deep, int32_t *_retval) override; \
  NS_IMETHOD GetNumPendingUnread(int32_t *aNumPendingUnread) override; \
  NS_IMETHOD GetNumPendingTotalMessages(int32_t *aNumPendingTotalMessages) override; \
  NS_IMETHOD ChangeNumPendingUnread(int32_t delta) override; \
  NS_IMETHOD ChangeNumPendingTotalMessages(int32_t delta) override; \
  NS_IMETHOD GetHasNewMessages(bool *aHasNewMessages) override; \
  NS_IMETHOD SetHasNewMessages(bool aHasNewMessages) override; \
  NS_IMETHOD GetHasFolderOrSubfolderNewMessages(bool *aHasFolderOrSubfolderNewMessages) override; \
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage) override; \
  NS_IMETHOD ClearNewMessages(void) override; \
  NS_IMETHOD GetExpungedBytes(int64_t *aExpungedBytes) override; \
  NS_IMETHOD GetDeletable(bool *aDeletable) override; \
  NS_IMETHOD GetDisplayRecipients(bool *aDisplayRecipients) override; \
  NS_IMETHOD GetManyHeadersToDownload(bool *aManyHeadersToDownload) override; \
  NS_IMETHOD GetRelativePathName(nsACString & aRelativePathName) override; \
  NS_IMETHOD GetSizeOnDisk(int64_t *aSizeOnDisk) override; \
  NS_IMETHOD SetSizeOnDisk(int64_t aSizeOnDisk) override; \
  NS_IMETHOD GetUsername(nsACString & aUsername) override; \
  NS_IMETHOD GetHostname(nsACString & aHostname) override; \
  NS_IMETHOD SetFlag(uint32_t flag) override; \
  NS_IMETHOD ClearFlag(uint32_t flag) override; \
  NS_IMETHOD GetFlag(uint32_t flag, bool *_retval) override; \
  NS_IMETHOD ToggleFlag(uint32_t flag) override; \
  NS_IMETHOD OnFlagChange(uint32_t flag) override; \
  NS_IMETHOD GetFlags(uint32_t *aFlags) override; \
  NS_IMETHOD SetFlags(uint32_t aFlags) override; \
  NS_IMETHOD GetFolderWithFlags(uint32_t flags, nsIMsgFolder * *_retval) override; \
  NS_IMETHOD GetFoldersWithFlags(uint32_t flags, nsIArray * *_retval) override; \
  NS_IMETHOD ListFoldersWithFlags(uint32_t flags, nsIMutableArray *folders) override; \
  NS_IMETHOD IsSpecialFolder(uint32_t flags, bool checkAncestors, bool *_retval) override; \
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, nsACString & _retval) override; \
  NS_IMETHOD DeleteMessages(nsIArray *messages, nsIMsgWindow *msgWindow, bool deleteStorage, bool isMove, nsIMsgCopyServiceListener *listener, bool allowUndo) override; \
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, bool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, bool isFolder, bool allowUndo) override; \
  NS_IMETHOD CopyFolder(nsIMsgFolder *srcFolder, bool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) override; \
  NS_IMETHOD CopyFileMessage(nsIFile *file, nsIMsgDBHdr *msgToReplace, bool isDraft, uint32_t newMsgFlags, const nsACString & aKeywords, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) override; \
  NS_IMETHOD AcquireSemaphore(nsISupports *semHolder) override; \
  NS_IMETHOD ReleaseSemaphore(nsISupports *semHolder) override; \
  NS_IMETHOD TestSemaphore(nsISupports *semHolder, bool *_retval) override; \
  NS_IMETHOD GetLocked(bool *aLocked) override; \
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow, nsIUrlListener *aListener) override; \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, bool deep) override; \
  NS_IMETHOD GetCharset(nsACString & aCharset) override; \
  NS_IMETHOD SetCharset(const nsACString & aCharset) override; \
  NS_IMETHOD GetCharsetOverride(bool *aCharsetOverride) override; \
  NS_IMETHOD SetCharsetOverride(bool aCharsetOverride) override; \
  NS_IMETHOD GetBiffState(uint32_t *aBiffState) override; \
  NS_IMETHOD SetBiffState(uint32_t aBiffState) override; \
  NS_IMETHOD GetNumNewMessages(bool deep, int32_t *_retval) override; \
  NS_IMETHOD SetNumNewMessages(int32_t numNewMessages) override; \
  NS_IMETHOD GetGettingNewMessages(bool *aGettingNewMessages) override; \
  NS_IMETHOD SetGettingNewMessages(bool aGettingNewMessages) override; \
  NS_IMETHOD GetFilePath(nsIFile * *aFilePath) override; \
  NS_IMETHOD SetFilePath(nsIFile *aFilePath) override; \
  NS_IMETHOD GetSummaryFile(nsIFile * *aSummaryFile) override; \
  NS_IMETHOD GetBaseMessageURI(nsACString & aBaseMessageURI) override; \
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, nsACString & _retval) override; \
  NS_IMETHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag) override; \
  NS_IMETHOD MarkMessagesRead(nsIArray *messages, bool markRead) override; \
  NS_IMETHOD MarkAllMessagesRead(nsIMsgWindow *aMsgWindow) override; \
  NS_IMETHOD MarkMessagesFlagged(nsIArray *messages, bool markFlagged) override; \
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread) override; \
  NS_IMETHOD SetLabelForMessages(nsIArray *messages, nsMsgLabelValue label) override; \
  NS_IMETHOD GetMsgDatabase(nsIMsgDatabase * *aMsgDatabase) override; \
  NS_IMETHOD SetMsgDatabase(nsIMsgDatabase *aMsgDatabase) override; \
  NS_IMETHOD GetDatabaseOpen(bool *aDatabaseOpen) override; \
  NS_IMETHOD GetBackupMsgDatabase(nsIMsgDatabase * *_retval) override; \
  NS_IMETHOD RemoveBackupMsgDatabase(void) override; \
  NS_IMETHOD OpenBackupMsgDatabase(void) override; \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo * *folderInfo, nsIMsgDatabase * *_retval) override; \
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) override; \
  NS_IMETHOD GetSupportsOffline(bool *aSupportsOffline) override; \
  NS_IMETHOD ShouldStoreMsgOffline(nsMsgKey msgKey, bool *_retval) override; \
  NS_IMETHOD HasMsgOffline(nsMsgKey msgKey, bool *_retval) override; \
  NS_IMETHOD GetOfflineFileStream(nsMsgKey aMsgKey, int64_t *aOffset, uint32_t *aSize, nsIInputStream * *_retval) override; \
  NS_IMETHOD GetOfflineMsgFolder(nsMsgKey msgKey, nsIMsgFolder * *_retval) override; \
  NS_IMETHOD GetOfflineStoreOutputStream(nsIMsgDBHdr *aHdr, nsIOutputStream * *_retval) override; \
  NS_IMETHOD GetMsgInputStream(nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval) override; \
  NS_IMETHOD DownloadMessagesForOffline(nsIArray *messages, nsIMsgWindow *window) override; \
  NS_IMETHOD GetChildWithURI(const nsACString & uri, bool deep, bool caseInsensitive, nsIMsgFolder * *_retval) override; \
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window) override; \
  NS_IMETHOD EnableNotifications(int32_t notificationType, bool enable, bool dbBatching) override; \
  NS_IMETHOD IsCommandEnabled(const nsACString & command, bool *_retval) override; \
  NS_IMETHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, bool caseInsensitive, bool *_retval) override; \
  NS_IMETHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, bool *_retval) override; \
  NS_IMETHOD AlertFilterChanged(nsIMsgWindow *msgWindow) override; \
  NS_IMETHOD ThrowAlertMsg(const char * msgName, nsIMsgWindow *msgWindow) override; \
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char * msgName, nsAString & _retval) override; \
  NS_IMETHOD NotifyCompactCompleted(void) override; \
  NS_IMETHOD CompareSortKeys(nsIMsgFolder *msgFolder, int32_t *_retval) override; \
  NS_IMETHOD GetSortKey(uint32_t *length, uint8_t **key) override; \
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings) override; \
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings *aRetentionSettings) override; \
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings) override; \
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings *aDownloadSettings) override; \
  NS_IMETHOD CallFilterPlugins(nsIMsgWindow *aMsgWindow, bool *_retval) override; \
  NS_IMETHOD GetSortOrder(int32_t *aSortOrder) override; \
  NS_IMETHOD SetSortOrder(int32_t aSortOrder) override; \
  NS_IMETHOD GetDBTransferInfo(nsIDBFolderInfo * *aDBTransferInfo) override; \
  NS_IMETHOD SetDBTransferInfo(nsIDBFolderInfo *aDBTransferInfo) override; \
  NS_IMETHOD GetStringProperty(const char * propertyName, nsACString & _retval) override; \
  NS_IMETHOD SetStringProperty(const char * propertyName, const nsACString & propertyValue) override; \
  NS_IMETHOD GetLastMessageLoaded(nsMsgKey *aLastMessageLoaded) override; \
  NS_IMETHOD SetLastMessageLoaded(nsMsgKey aLastMessageLoaded) override; \
  NS_IMETHOD GetURI(nsACString & aURI) override; \
  NS_IMETHOD GetName(nsAString & aName) override; \
  NS_IMETHOD SetName(const nsAString & aName) override; \
  NS_IMETHOD GetPrettyName(nsAString & aPrettyName) override; \
  NS_IMETHOD SetPrettyName(const nsAString & aPrettyName) override; \
  NS_IMETHOD GetAbbreviatedName(nsAString & aAbbreviatedName) override; \
  NS_IMETHOD GetParent(nsIMsgFolder * *aParent) override; \
  NS_IMETHOD SetParent(nsIMsgFolder *aParent) override; \
  NS_IMETHOD GetSubFolders(nsISimpleEnumerator * *aSubFolders) override; \
  NS_IMETHOD GetHasSubFolders(bool *aHasSubFolders) override; \
  NS_IMETHOD GetNumSubFolders(uint32_t *aNumSubFolders) override; \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, bool *_retval) override; \
  NS_IMETHOD ContainsChildNamed(const nsAString & name, bool *_retval) override; \
  NS_IMETHOD GetChildNamed(const nsAString & aName, nsIMsgFolder * *_retval) override; \
  NS_IMETHOD FindSubFolder(const nsACString & escapedSubFolderName, nsIMsgFolder * *_retval) override; \
  NS_IMETHOD AddFolderListener(nsIFolderListener *listener) override; \
  NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener) override; \
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const nsACString & oldValue, const nsACString & newValue) override; \
  NS_IMETHOD NotifyIntPropertyChanged(nsIAtom *property, int64_t oldValue, int64_t newValue) override; \
  NS_IMETHOD NotifyBoolPropertyChanged(nsIAtom *property, bool oldValue, bool newValue) override; \
  NS_IMETHOD NotifyPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, uint32_t oldValue, uint32_t newValue) override; \
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const nsAString & oldValue, const nsAString & newValue) override; \
  NS_IMETHOD NotifyItemAdded(nsISupports *item) override; \
  NS_IMETHOD NotifyItemRemoved(nsISupports *item) override; \
  NS_IMETHOD NotifyFolderEvent(nsIAtom *event) override; \
  NS_IMETHOD GetDescendants(nsIArray * *aDescendants) override; \
  NS_IMETHOD ListDescendants(nsIMutableArray *aDescendants) override; \
  NS_IMETHOD Shutdown(bool shutdownChildren) override; \
  NS_IMETHOD GetInVFEditSearchScope(bool *aInVFEditSearchScope) override; \
  NS_IMETHOD SetInVFEditSearchScope(bool aSearchThisFolder, bool aSetOnSubFolders) override; \
  NS_IMETHOD CopyDataToOutputStreamForAppend(nsIInputStream *aIStream, int32_t aLength, nsIOutputStream *outputStream) override; \
  NS_IMETHOD CopyDataDone(void) override; \
  NS_IMETHOD SetJunkScoreForMessages(nsIArray *aMessages, const nsACString & aJunkScore) override; \
  NS_IMETHOD ApplyRetentionSettings(void) override; \
  NS_IMETHOD FetchMsgPreviewText(nsMsgKey *aKeysToFetch, uint32_t aNumKeys, bool aLocalOnly, nsIUrlListener *aUrlListener, bool *_retval) override; \
  NS_IMETHOD AddKeywordsToMessages(nsIArray *aMessages, const nsACString & aKeywords) override; \
  NS_IMETHOD RemoveKeywordsFromMessages(nsIArray *aMessages, const nsACString & aKeywords) override; \
  NS_IMETHOD GetMsgTextFromStream(nsIInputStream *aStream, const nsACString & aCharset, uint32_t aBytesToRead, uint32_t aMaxOutputLen, bool aCompressQuotes, bool aStripHTMLTags, nsACString & aContentType, nsACString & _retval) override; \
  NS_IMETHOD ConvertMsgSnippetToPlainText(const nsAString & aMessageText, nsAString & _retval) override; \
  NS_IMETHOD GetCustomIdentity(nsIMsgIdentity * *aCustomIdentity) override; \
  NS_IMETHOD GetProcessingFlags(nsMsgKey msgKey, uint32_t *_retval) override; \
  NS_IMETHOD OrProcessingFlags(nsMsgKey msgKey, uint32_t mask) override; \
  NS_IMETHOD AndProcessingFlags(nsMsgKey msgKey, uint32_t mask) override; \
  NS_IMETHOD GetInheritedStringProperty(const char * propertyName, nsACString & _retval) override; \
  NS_IMETHOD SetForcePropertyEmpty(const char * propertyName, bool aForcePropertyEmpty) override; \
  NS_IMETHOD GetForcePropertyEmpty(const char * propertyName, bool *_retval) override; \
  NS_IMETHOD GetMsgStore(nsIMsgPluggableStore * *aMsgStore) override; \
  NS_IMETHOD GetIncomingServerType(nsACString & aIncomingServerType) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIMSGFOLDER \
  NS_METHOD GetMessages(nsISimpleEnumerator * *aMessages); \
  NS_METHOD StartFolderLoading(void); \
  NS_METHOD EndFolderLoading(void); \
  NS_METHOD UpdateFolder(nsIMsgWindow *aWindow); \
  NS_METHOD GetPrettiestName(nsAString & aPrettiestName); \
  NS_METHOD GetFolderURL(nsACString & aFolderURL); \
  NS_METHOD GetShowDeletedMessages(bool *aShowDeletedMessages); \
  NS_METHOD GetServer(nsIMsgIncomingServer * *aServer); \
  NS_METHOD GetIsServer(bool *aIsServer); \
  NS_METHOD GetCanSubscribe(bool *aCanSubscribe); \
  NS_METHOD GetCanFileMessages(bool *aCanFileMessages); \
  NS_METHOD GetNoSelect(bool *aNoSelect); \
  NS_METHOD GetImapShared(bool *aImapShared); \
  NS_METHOD GetCanDeleteMessages(bool *aCanDeleteMessages); \
  NS_METHOD GetCanCreateSubfolders(bool *aCanCreateSubfolders); \
  NS_METHOD GetCanRename(bool *aCanRename); \
  NS_METHOD GetCanCompact(bool *aCanCompact); \
  NS_METHOD GetRootFolder(nsIMsgFolder * *aRootFolder); \
  NS_METHOD GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval); \
  NS_METHOD SetFilterList(nsIMsgFilterList *filterList); \
  NS_METHOD GetEditableFilterList(nsIMsgWindow *aMsgWindow, nsIMsgFilterList * *_retval); \
  NS_METHOD SetEditableFilterList(nsIMsgFilterList *aFilterList); \
  NS_METHOD ForceDBClosed(void); \
  NS_METHOD CloseAndBackupFolderDB(const nsACString & newName); \
  NS_METHOD Delete(void); \
  NS_METHOD DeleteSubFolders(nsIArray *folders, nsIMsgWindow *msgWindow); \
  NS_METHOD PropagateDelete(nsIMsgFolder *folder, bool deleteStorage, nsIMsgWindow *msgWindow); \
  NS_METHOD RecursiveDelete(bool deleteStorage, nsIMsgWindow *msgWindow); \
  NS_METHOD CreateSubfolder(const nsAString & folderName, nsIMsgWindow *msgWindow); \
  NS_METHOD AddSubfolder(const nsAString & aFolderName, nsIMsgFolder * *_retval); \
  NS_METHOD CreateStorageIfMissing(nsIUrlListener *urlListener); \
  NS_METHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow); \
  NS_METHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, bool aCompactOfflineAlso); \
  NS_METHOD CompactAllOfflineStores(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsIArray *aOfflineFolderArray); \
  NS_METHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener); \
  NS_METHOD Rename(const nsAString & name, nsIMsgWindow *msgWindow); \
  NS_METHOD RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder); \
  NS_METHOD GenerateUniqueSubfolderName(const nsAString & prefix, nsIMsgFolder *otherFolder, nsAString & _retval); \
  NS_METHOD UpdateSummaryTotals(bool force); \
  NS_METHOD SummaryChanged(void); \
  NS_METHOD GetNumUnread(bool deep, int32_t *_retval); \
  NS_METHOD GetTotalMessages(bool deep, int32_t *_retval); \
  NS_METHOD GetNumPendingUnread(int32_t *aNumPendingUnread); \
  NS_METHOD GetNumPendingTotalMessages(int32_t *aNumPendingTotalMessages); \
  NS_METHOD ChangeNumPendingUnread(int32_t delta); \
  NS_METHOD ChangeNumPendingTotalMessages(int32_t delta); \
  NS_METHOD GetHasNewMessages(bool *aHasNewMessages); \
  NS_METHOD SetHasNewMessages(bool aHasNewMessages); \
  NS_METHOD GetHasFolderOrSubfolderNewMessages(bool *aHasFolderOrSubfolderNewMessages); \
  NS_METHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage); \
  NS_METHOD ClearNewMessages(void); \
  NS_METHOD GetExpungedBytes(int64_t *aExpungedBytes); \
  NS_METHOD GetDeletable(bool *aDeletable); \
  NS_METHOD GetDisplayRecipients(bool *aDisplayRecipients); \
  NS_METHOD GetManyHeadersToDownload(bool *aManyHeadersToDownload); \
  NS_METHOD GetRelativePathName(nsACString & aRelativePathName); \
  NS_METHOD GetSizeOnDisk(int64_t *aSizeOnDisk); \
  NS_METHOD SetSizeOnDisk(int64_t aSizeOnDisk); \
  NS_METHOD GetUsername(nsACString & aUsername); \
  NS_METHOD GetHostname(nsACString & aHostname); \
  NS_METHOD SetFlag(uint32_t flag); \
  NS_METHOD ClearFlag(uint32_t flag); \
  NS_METHOD GetFlag(uint32_t flag, bool *_retval); \
  NS_METHOD ToggleFlag(uint32_t flag); \
  NS_METHOD OnFlagChange(uint32_t flag); \
  NS_METHOD GetFlags(uint32_t *aFlags); \
  NS_METHOD SetFlags(uint32_t aFlags); \
  NS_METHOD GetFolderWithFlags(uint32_t flags, nsIMsgFolder * *_retval); \
  NS_METHOD GetFoldersWithFlags(uint32_t flags, nsIArray * *_retval); \
  NS_METHOD ListFoldersWithFlags(uint32_t flags, nsIMutableArray *folders); \
  NS_METHOD IsSpecialFolder(uint32_t flags, bool checkAncestors, bool *_retval); \
  NS_METHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, nsACString & _retval); \
  NS_METHOD DeleteMessages(nsIArray *messages, nsIMsgWindow *msgWindow, bool deleteStorage, bool isMove, nsIMsgCopyServiceListener *listener, bool allowUndo); \
  NS_METHOD CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, bool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, bool isFolder, bool allowUndo); \
  NS_METHOD CopyFolder(nsIMsgFolder *srcFolder, bool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener); \
  NS_METHOD CopyFileMessage(nsIFile *file, nsIMsgDBHdr *msgToReplace, bool isDraft, uint32_t newMsgFlags, const nsACString & aKeywords, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener); \
  NS_METHOD AcquireSemaphore(nsISupports *semHolder); \
  NS_METHOD ReleaseSemaphore(nsISupports *semHolder); \
  NS_METHOD TestSemaphore(nsISupports *semHolder, bool *_retval); \
  NS_METHOD GetLocked(bool *aLocked); \
  NS_METHOD GetNewMessages(nsIMsgWindow *aWindow, nsIUrlListener *aListener); \
  NS_METHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, bool deep); \
  NS_METHOD GetCharset(nsACString & aCharset); \
  NS_METHOD SetCharset(const nsACString & aCharset); \
  NS_METHOD GetCharsetOverride(bool *aCharsetOverride); \
  NS_METHOD SetCharsetOverride(bool aCharsetOverride); \
  NS_METHOD GetBiffState(uint32_t *aBiffState); \
  NS_METHOD SetBiffState(uint32_t aBiffState); \
  NS_METHOD GetNumNewMessages(bool deep, int32_t *_retval); \
  NS_METHOD SetNumNewMessages(int32_t numNewMessages); \
  NS_METHOD GetGettingNewMessages(bool *aGettingNewMessages); \
  NS_METHOD SetGettingNewMessages(bool aGettingNewMessages); \
  NS_METHOD GetFilePath(nsIFile * *aFilePath); \
  NS_METHOD SetFilePath(nsIFile *aFilePath); \
  NS_METHOD GetSummaryFile(nsIFile * *aSummaryFile); \
  NS_METHOD GetBaseMessageURI(nsACString & aBaseMessageURI); \
  NS_METHOD GenerateMessageURI(nsMsgKey msgKey, nsACString & _retval); \
  NS_METHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag); \
  NS_METHOD MarkMessagesRead(nsIArray *messages, bool markRead); \
  NS_METHOD MarkAllMessagesRead(nsIMsgWindow *aMsgWindow); \
  NS_METHOD MarkMessagesFlagged(nsIArray *messages, bool markFlagged); \
  NS_METHOD MarkThreadRead(nsIMsgThread *thread); \
  NS_METHOD SetLabelForMessages(nsIArray *messages, nsMsgLabelValue label); \
  NS_METHOD GetMsgDatabase(nsIMsgDatabase * *aMsgDatabase); \
  NS_METHOD SetMsgDatabase(nsIMsgDatabase *aMsgDatabase); \
  NS_METHOD GetDatabaseOpen(bool *aDatabaseOpen); \
  NS_METHOD GetBackupMsgDatabase(nsIMsgDatabase * *_retval); \
  NS_METHOD RemoveBackupMsgDatabase(void); \
  NS_METHOD OpenBackupMsgDatabase(void); \
  NS_METHOD GetDBFolderInfoAndDB(nsIDBFolderInfo * *folderInfo, nsIMsgDatabase * *_retval); \
  NS_METHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr * *_retval); \
  NS_METHOD GetSupportsOffline(bool *aSupportsOffline); \
  NS_METHOD ShouldStoreMsgOffline(nsMsgKey msgKey, bool *_retval); \
  NS_METHOD HasMsgOffline(nsMsgKey msgKey, bool *_retval); \
  NS_METHOD GetOfflineFileStream(nsMsgKey aMsgKey, int64_t *aOffset, uint32_t *aSize, nsIInputStream * *_retval); \
  NS_METHOD GetOfflineMsgFolder(nsMsgKey msgKey, nsIMsgFolder * *_retval); \
  NS_METHOD GetOfflineStoreOutputStream(nsIMsgDBHdr *aHdr, nsIOutputStream * *_retval); \
  NS_METHOD GetMsgInputStream(nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval); \
  NS_METHOD DownloadMessagesForOffline(nsIArray *messages, nsIMsgWindow *window); \
  NS_METHOD GetChildWithURI(const nsACString & uri, bool deep, bool caseInsensitive, nsIMsgFolder * *_retval); \
  NS_METHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window); \
  NS_METHOD EnableNotifications(int32_t notificationType, bool enable, bool dbBatching); \
  NS_METHOD IsCommandEnabled(const nsACString & command, bool *_retval); \
  NS_METHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, bool caseInsensitive, bool *_retval); \
  NS_METHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, bool *_retval); \
  NS_METHOD AlertFilterChanged(nsIMsgWindow *msgWindow); \
  NS_METHOD ThrowAlertMsg(const char * msgName, nsIMsgWindow *msgWindow); \
  NS_METHOD GetStringWithFolderNameFromBundle(const char * msgName, nsAString & _retval); \
  NS_METHOD NotifyCompactCompleted(void); \
  NS_METHOD CompareSortKeys(nsIMsgFolder *msgFolder, int32_t *_retval); \
  NS_METHOD GetSortKey(uint32_t *length, uint8_t **key); \
  NS_METHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings); \
  NS_METHOD SetRetentionSettings(nsIMsgRetentionSettings *aRetentionSettings); \
  NS_METHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings); \
  NS_METHOD SetDownloadSettings(nsIMsgDownloadSettings *aDownloadSettings); \
  NS_METHOD CallFilterPlugins(nsIMsgWindow *aMsgWindow, bool *_retval); \
  NS_METHOD GetSortOrder(int32_t *aSortOrder); \
  NS_METHOD SetSortOrder(int32_t aSortOrder); \
  NS_METHOD GetDBTransferInfo(nsIDBFolderInfo * *aDBTransferInfo); \
  NS_METHOD SetDBTransferInfo(nsIDBFolderInfo *aDBTransferInfo); \
  NS_METHOD GetStringProperty(const char * propertyName, nsACString & _retval); \
  NS_METHOD SetStringProperty(const char * propertyName, const nsACString & propertyValue); \
  NS_METHOD GetLastMessageLoaded(nsMsgKey *aLastMessageLoaded); \
  NS_METHOD SetLastMessageLoaded(nsMsgKey aLastMessageLoaded); \
  NS_METHOD GetURI(nsACString & aURI); \
  NS_METHOD GetName(nsAString & aName); \
  NS_METHOD SetName(const nsAString & aName); \
  NS_METHOD GetPrettyName(nsAString & aPrettyName); \
  NS_METHOD SetPrettyName(const nsAString & aPrettyName); \
  NS_METHOD GetAbbreviatedName(nsAString & aAbbreviatedName); \
  NS_METHOD GetParent(nsIMsgFolder * *aParent); \
  NS_METHOD SetParent(nsIMsgFolder *aParent); \
  NS_METHOD GetSubFolders(nsISimpleEnumerator * *aSubFolders); \
  NS_METHOD GetHasSubFolders(bool *aHasSubFolders); \
  NS_METHOD GetNumSubFolders(uint32_t *aNumSubFolders); \
  NS_METHOD IsAncestorOf(nsIMsgFolder *folder, bool *_retval); \
  NS_METHOD ContainsChildNamed(const nsAString & name, bool *_retval); \
  NS_METHOD GetChildNamed(const nsAString & aName, nsIMsgFolder * *_retval); \
  NS_METHOD FindSubFolder(const nsACString & escapedSubFolderName, nsIMsgFolder * *_retval); \
  NS_METHOD AddFolderListener(nsIFolderListener *listener); \
  NS_METHOD RemoveFolderListener(nsIFolderListener *listener); \
  NS_METHOD NotifyPropertyChanged(nsIAtom *property, const nsACString & oldValue, const nsACString & newValue); \
  NS_METHOD NotifyIntPropertyChanged(nsIAtom *property, int64_t oldValue, int64_t newValue); \
  NS_METHOD NotifyBoolPropertyChanged(nsIAtom *property, bool oldValue, bool newValue); \
  NS_METHOD NotifyPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, uint32_t oldValue, uint32_t newValue); \
  NS_METHOD NotifyUnicharPropertyChanged(nsIAtom *property, const nsAString & oldValue, const nsAString & newValue); \
  NS_METHOD NotifyItemAdded(nsISupports *item); \
  NS_METHOD NotifyItemRemoved(nsISupports *item); \
  NS_METHOD NotifyFolderEvent(nsIAtom *event); \
  NS_METHOD GetDescendants(nsIArray * *aDescendants); \
  NS_METHOD ListDescendants(nsIMutableArray *aDescendants); \
  NS_METHOD Shutdown(bool shutdownChildren); \
  NS_METHOD GetInVFEditSearchScope(bool *aInVFEditSearchScope); \
  NS_METHOD SetInVFEditSearchScope(bool aSearchThisFolder, bool aSetOnSubFolders); \
  NS_METHOD CopyDataToOutputStreamForAppend(nsIInputStream *aIStream, int32_t aLength, nsIOutputStream *outputStream); \
  NS_METHOD CopyDataDone(void); \
  NS_METHOD SetJunkScoreForMessages(nsIArray *aMessages, const nsACString & aJunkScore); \
  NS_METHOD ApplyRetentionSettings(void); \
  NS_METHOD FetchMsgPreviewText(nsMsgKey *aKeysToFetch, uint32_t aNumKeys, bool aLocalOnly, nsIUrlListener *aUrlListener, bool *_retval); \
  NS_METHOD AddKeywordsToMessages(nsIArray *aMessages, const nsACString & aKeywords); \
  NS_METHOD RemoveKeywordsFromMessages(nsIArray *aMessages, const nsACString & aKeywords); \
  NS_METHOD GetMsgTextFromStream(nsIInputStream *aStream, const nsACString & aCharset, uint32_t aBytesToRead, uint32_t aMaxOutputLen, bool aCompressQuotes, bool aStripHTMLTags, nsACString & aContentType, nsACString & _retval); \
  NS_METHOD ConvertMsgSnippetToPlainText(const nsAString & aMessageText, nsAString & _retval); \
  NS_METHOD GetCustomIdentity(nsIMsgIdentity * *aCustomIdentity); \
  NS_METHOD GetProcessingFlags(nsMsgKey msgKey, uint32_t *_retval); \
  NS_METHOD OrProcessingFlags(nsMsgKey msgKey, uint32_t mask); \
  NS_METHOD AndProcessingFlags(nsMsgKey msgKey, uint32_t mask); \
  NS_METHOD GetInheritedStringProperty(const char * propertyName, nsACString & _retval); \
  NS_METHOD SetForcePropertyEmpty(const char * propertyName, bool aForcePropertyEmpty); \
  NS_METHOD GetForcePropertyEmpty(const char * propertyName, bool *_retval); \
  NS_METHOD GetMsgStore(nsIMsgPluggableStore * *aMsgStore); \
  NS_METHOD GetIncomingServerType(nsACString & aIncomingServerType); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGFOLDER(_to) \
  NS_IMETHOD GetMessages(nsISimpleEnumerator * *aMessages) override { return _to GetMessages(aMessages); } \
  NS_IMETHOD StartFolderLoading(void) override { return _to StartFolderLoading(); } \
  NS_IMETHOD EndFolderLoading(void) override { return _to EndFolderLoading(); } \
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow) override { return _to UpdateFolder(aWindow); } \
  NS_IMETHOD GetPrettiestName(nsAString & aPrettiestName) override { return _to GetPrettiestName(aPrettiestName); } \
  NS_IMETHOD GetFolderURL(nsACString & aFolderURL) override { return _to GetFolderURL(aFolderURL); } \
  NS_IMETHOD GetShowDeletedMessages(bool *aShowDeletedMessages) override { return _to GetShowDeletedMessages(aShowDeletedMessages); } \
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer) override { return _to GetServer(aServer); } \
  NS_IMETHOD GetIsServer(bool *aIsServer) override { return _to GetIsServer(aIsServer); } \
  NS_IMETHOD GetCanSubscribe(bool *aCanSubscribe) override { return _to GetCanSubscribe(aCanSubscribe); } \
  NS_IMETHOD GetCanFileMessages(bool *aCanFileMessages) override { return _to GetCanFileMessages(aCanFileMessages); } \
  NS_IMETHOD GetNoSelect(bool *aNoSelect) override { return _to GetNoSelect(aNoSelect); } \
  NS_IMETHOD GetImapShared(bool *aImapShared) override { return _to GetImapShared(aImapShared); } \
  NS_IMETHOD GetCanDeleteMessages(bool *aCanDeleteMessages) override { return _to GetCanDeleteMessages(aCanDeleteMessages); } \
  NS_IMETHOD GetCanCreateSubfolders(bool *aCanCreateSubfolders) override { return _to GetCanCreateSubfolders(aCanCreateSubfolders); } \
  NS_IMETHOD GetCanRename(bool *aCanRename) override { return _to GetCanRename(aCanRename); } \
  NS_IMETHOD GetCanCompact(bool *aCanCompact) override { return _to GetCanCompact(aCanCompact); } \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder) override { return _to GetRootFolder(aRootFolder); } \
  NS_IMETHOD GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval) override { return _to GetFilterList(msgWindow, _retval); } \
  NS_IMETHOD SetFilterList(nsIMsgFilterList *filterList) override { return _to SetFilterList(filterList); } \
  NS_IMETHOD GetEditableFilterList(nsIMsgWindow *aMsgWindow, nsIMsgFilterList * *_retval) override { return _to GetEditableFilterList(aMsgWindow, _retval); } \
  NS_IMETHOD SetEditableFilterList(nsIMsgFilterList *aFilterList) override { return _to SetEditableFilterList(aFilterList); } \
  NS_IMETHOD ForceDBClosed(void) override { return _to ForceDBClosed(); } \
  NS_IMETHOD CloseAndBackupFolderDB(const nsACString & newName) override { return _to CloseAndBackupFolderDB(newName); } \
  NS_IMETHOD Delete(void) override { return _to Delete(); } \
  NS_IMETHOD DeleteSubFolders(nsIArray *folders, nsIMsgWindow *msgWindow) override { return _to DeleteSubFolders(folders, msgWindow); } \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, bool deleteStorage, nsIMsgWindow *msgWindow) override { return _to PropagateDelete(folder, deleteStorage, msgWindow); } \
  NS_IMETHOD RecursiveDelete(bool deleteStorage, nsIMsgWindow *msgWindow) override { return _to RecursiveDelete(deleteStorage, msgWindow); } \
  NS_IMETHOD CreateSubfolder(const nsAString & folderName, nsIMsgWindow *msgWindow) override { return _to CreateSubfolder(folderName, msgWindow); } \
  NS_IMETHOD AddSubfolder(const nsAString & aFolderName, nsIMsgFolder * *_retval) override { return _to AddSubfolder(aFolderName, _retval); } \
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener) override { return _to CreateStorageIfMissing(urlListener); } \
  NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) override { return _to Compact(aListener, aMsgWindow); } \
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, bool aCompactOfflineAlso) override { return _to CompactAll(aListener, aMsgWindow, aCompactOfflineAlso); } \
  NS_IMETHOD CompactAllOfflineStores(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsIArray *aOfflineFolderArray) override { return _to CompactAllOfflineStores(aListener, aMsgWindow, aOfflineFolderArray); } \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) override { return _to EmptyTrash(aMsgWindow, aListener); } \
  NS_IMETHOD Rename(const nsAString & name, nsIMsgWindow *msgWindow) override { return _to Rename(name, msgWindow); } \
  NS_IMETHOD RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder) override { return _to RenameSubFolders(msgWindow, oldFolder); } \
  NS_IMETHOD GenerateUniqueSubfolderName(const nsAString & prefix, nsIMsgFolder *otherFolder, nsAString & _retval) override { return _to GenerateUniqueSubfolderName(prefix, otherFolder, _retval); } \
  NS_IMETHOD UpdateSummaryTotals(bool force) override { return _to UpdateSummaryTotals(force); } \
  NS_IMETHOD SummaryChanged(void) override { return _to SummaryChanged(); } \
  NS_IMETHOD GetNumUnread(bool deep, int32_t *_retval) override { return _to GetNumUnread(deep, _retval); } \
  NS_IMETHOD GetTotalMessages(bool deep, int32_t *_retval) override { return _to GetTotalMessages(deep, _retval); } \
  NS_IMETHOD GetNumPendingUnread(int32_t *aNumPendingUnread) override { return _to GetNumPendingUnread(aNumPendingUnread); } \
  NS_IMETHOD GetNumPendingTotalMessages(int32_t *aNumPendingTotalMessages) override { return _to GetNumPendingTotalMessages(aNumPendingTotalMessages); } \
  NS_IMETHOD ChangeNumPendingUnread(int32_t delta) override { return _to ChangeNumPendingUnread(delta); } \
  NS_IMETHOD ChangeNumPendingTotalMessages(int32_t delta) override { return _to ChangeNumPendingTotalMessages(delta); } \
  NS_IMETHOD GetHasNewMessages(bool *aHasNewMessages) override { return _to GetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD SetHasNewMessages(bool aHasNewMessages) override { return _to SetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD GetHasFolderOrSubfolderNewMessages(bool *aHasFolderOrSubfolderNewMessages) override { return _to GetHasFolderOrSubfolderNewMessages(aHasFolderOrSubfolderNewMessages); } \
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage) override { return _to GetFirstNewMessage(aFirstNewMessage); } \
  NS_IMETHOD ClearNewMessages(void) override { return _to ClearNewMessages(); } \
  NS_IMETHOD GetExpungedBytes(int64_t *aExpungedBytes) override { return _to GetExpungedBytes(aExpungedBytes); } \
  NS_IMETHOD GetDeletable(bool *aDeletable) override { return _to GetDeletable(aDeletable); } \
  NS_IMETHOD GetDisplayRecipients(bool *aDisplayRecipients) override { return _to GetDisplayRecipients(aDisplayRecipients); } \
  NS_IMETHOD GetManyHeadersToDownload(bool *aManyHeadersToDownload) override { return _to GetManyHeadersToDownload(aManyHeadersToDownload); } \
  NS_IMETHOD GetRelativePathName(nsACString & aRelativePathName) override { return _to GetRelativePathName(aRelativePathName); } \
  NS_IMETHOD GetSizeOnDisk(int64_t *aSizeOnDisk) override { return _to GetSizeOnDisk(aSizeOnDisk); } \
  NS_IMETHOD SetSizeOnDisk(int64_t aSizeOnDisk) override { return _to SetSizeOnDisk(aSizeOnDisk); } \
  NS_IMETHOD GetUsername(nsACString & aUsername) override { return _to GetUsername(aUsername); } \
  NS_IMETHOD GetHostname(nsACString & aHostname) override { return _to GetHostname(aHostname); } \
  NS_IMETHOD SetFlag(uint32_t flag) override { return _to SetFlag(flag); } \
  NS_IMETHOD ClearFlag(uint32_t flag) override { return _to ClearFlag(flag); } \
  NS_IMETHOD GetFlag(uint32_t flag, bool *_retval) override { return _to GetFlag(flag, _retval); } \
  NS_IMETHOD ToggleFlag(uint32_t flag) override { return _to ToggleFlag(flag); } \
  NS_IMETHOD OnFlagChange(uint32_t flag) override { return _to OnFlagChange(flag); } \
  NS_IMETHOD GetFlags(uint32_t *aFlags) override { return _to GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(uint32_t aFlags) override { return _to SetFlags(aFlags); } \
  NS_IMETHOD GetFolderWithFlags(uint32_t flags, nsIMsgFolder * *_retval) override { return _to GetFolderWithFlags(flags, _retval); } \
  NS_IMETHOD GetFoldersWithFlags(uint32_t flags, nsIArray * *_retval) override { return _to GetFoldersWithFlags(flags, _retval); } \
  NS_IMETHOD ListFoldersWithFlags(uint32_t flags, nsIMutableArray *folders) override { return _to ListFoldersWithFlags(flags, folders); } \
  NS_IMETHOD IsSpecialFolder(uint32_t flags, bool checkAncestors, bool *_retval) override { return _to IsSpecialFolder(flags, checkAncestors, _retval); } \
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, nsACString & _retval) override { return _to GetUriForMsg(msgHdr, _retval); } \
  NS_IMETHOD DeleteMessages(nsIArray *messages, nsIMsgWindow *msgWindow, bool deleteStorage, bool isMove, nsIMsgCopyServiceListener *listener, bool allowUndo) override { return _to DeleteMessages(messages, msgWindow, deleteStorage, isMove, listener, allowUndo); } \
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, bool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, bool isFolder, bool allowUndo) override { return _to CopyMessages(srcFolder, messages, isMove, msgWindow, listener, isFolder, allowUndo); } \
  NS_IMETHOD CopyFolder(nsIMsgFolder *srcFolder, bool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) override { return _to CopyFolder(srcFolder, isMoveFolder, msgWindow, listener); } \
  NS_IMETHOD CopyFileMessage(nsIFile *file, nsIMsgDBHdr *msgToReplace, bool isDraft, uint32_t newMsgFlags, const nsACString & aKeywords, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) override { return _to CopyFileMessage(file, msgToReplace, isDraft, newMsgFlags, aKeywords, msgWindow, listener); } \
  NS_IMETHOD AcquireSemaphore(nsISupports *semHolder) override { return _to AcquireSemaphore(semHolder); } \
  NS_IMETHOD ReleaseSemaphore(nsISupports *semHolder) override { return _to ReleaseSemaphore(semHolder); } \
  NS_IMETHOD TestSemaphore(nsISupports *semHolder, bool *_retval) override { return _to TestSemaphore(semHolder, _retval); } \
  NS_IMETHOD GetLocked(bool *aLocked) override { return _to GetLocked(aLocked); } \
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow, nsIUrlListener *aListener) override { return _to GetNewMessages(aWindow, aListener); } \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, bool deep) override { return _to WriteToFolderCache(folderCache, deep); } \
  NS_IMETHOD GetCharset(nsACString & aCharset) override { return _to GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const nsACString & aCharset) override { return _to SetCharset(aCharset); } \
  NS_IMETHOD GetCharsetOverride(bool *aCharsetOverride) override { return _to GetCharsetOverride(aCharsetOverride); } \
  NS_IMETHOD SetCharsetOverride(bool aCharsetOverride) override { return _to SetCharsetOverride(aCharsetOverride); } \
  NS_IMETHOD GetBiffState(uint32_t *aBiffState) override { return _to GetBiffState(aBiffState); } \
  NS_IMETHOD SetBiffState(uint32_t aBiffState) override { return _to SetBiffState(aBiffState); } \
  NS_IMETHOD GetNumNewMessages(bool deep, int32_t *_retval) override { return _to GetNumNewMessages(deep, _retval); } \
  NS_IMETHOD SetNumNewMessages(int32_t numNewMessages) override { return _to SetNumNewMessages(numNewMessages); } \
  NS_IMETHOD GetGettingNewMessages(bool *aGettingNewMessages) override { return _to GetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD SetGettingNewMessages(bool aGettingNewMessages) override { return _to SetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD GetFilePath(nsIFile * *aFilePath) override { return _to GetFilePath(aFilePath); } \
  NS_IMETHOD SetFilePath(nsIFile *aFilePath) override { return _to SetFilePath(aFilePath); } \
  NS_IMETHOD GetSummaryFile(nsIFile * *aSummaryFile) override { return _to GetSummaryFile(aSummaryFile); } \
  NS_IMETHOD GetBaseMessageURI(nsACString & aBaseMessageURI) override { return _to GetBaseMessageURI(aBaseMessageURI); } \
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, nsACString & _retval) override { return _to GenerateMessageURI(msgKey, _retval); } \
  NS_IMETHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag) override { return _to AddMessageDispositionState(aMessage, aDispositionFlag); } \
  NS_IMETHOD MarkMessagesRead(nsIArray *messages, bool markRead) override { return _to MarkMessagesRead(messages, markRead); } \
  NS_IMETHOD MarkAllMessagesRead(nsIMsgWindow *aMsgWindow) override { return _to MarkAllMessagesRead(aMsgWindow); } \
  NS_IMETHOD MarkMessagesFlagged(nsIArray *messages, bool markFlagged) override { return _to MarkMessagesFlagged(messages, markFlagged); } \
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread) override { return _to MarkThreadRead(thread); } \
  NS_IMETHOD SetLabelForMessages(nsIArray *messages, nsMsgLabelValue label) override { return _to SetLabelForMessages(messages, label); } \
  NS_IMETHOD GetMsgDatabase(nsIMsgDatabase * *aMsgDatabase) override { return _to GetMsgDatabase(aMsgDatabase); } \
  NS_IMETHOD SetMsgDatabase(nsIMsgDatabase *aMsgDatabase) override { return _to SetMsgDatabase(aMsgDatabase); } \
  NS_IMETHOD GetDatabaseOpen(bool *aDatabaseOpen) override { return _to GetDatabaseOpen(aDatabaseOpen); } \
  NS_IMETHOD GetBackupMsgDatabase(nsIMsgDatabase * *_retval) override { return _to GetBackupMsgDatabase(_retval); } \
  NS_IMETHOD RemoveBackupMsgDatabase(void) override { return _to RemoveBackupMsgDatabase(); } \
  NS_IMETHOD OpenBackupMsgDatabase(void) override { return _to OpenBackupMsgDatabase(); } \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo * *folderInfo, nsIMsgDatabase * *_retval) override { return _to GetDBFolderInfoAndDB(folderInfo, _retval); } \
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) override { return _to GetMessageHeader(msgKey, _retval); } \
  NS_IMETHOD GetSupportsOffline(bool *aSupportsOffline) override { return _to GetSupportsOffline(aSupportsOffline); } \
  NS_IMETHOD ShouldStoreMsgOffline(nsMsgKey msgKey, bool *_retval) override { return _to ShouldStoreMsgOffline(msgKey, _retval); } \
  NS_IMETHOD HasMsgOffline(nsMsgKey msgKey, bool *_retval) override { return _to HasMsgOffline(msgKey, _retval); } \
  NS_IMETHOD GetOfflineFileStream(nsMsgKey aMsgKey, int64_t *aOffset, uint32_t *aSize, nsIInputStream * *_retval) override { return _to GetOfflineFileStream(aMsgKey, aOffset, aSize, _retval); } \
  NS_IMETHOD GetOfflineMsgFolder(nsMsgKey msgKey, nsIMsgFolder * *_retval) override { return _to GetOfflineMsgFolder(msgKey, _retval); } \
  NS_IMETHOD GetOfflineStoreOutputStream(nsIMsgDBHdr *aHdr, nsIOutputStream * *_retval) override { return _to GetOfflineStoreOutputStream(aHdr, _retval); } \
  NS_IMETHOD GetMsgInputStream(nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval) override { return _to GetMsgInputStream(aHdr, aReusable, _retval); } \
  NS_IMETHOD DownloadMessagesForOffline(nsIArray *messages, nsIMsgWindow *window) override { return _to DownloadMessagesForOffline(messages, window); } \
  NS_IMETHOD GetChildWithURI(const nsACString & uri, bool deep, bool caseInsensitive, nsIMsgFolder * *_retval) override { return _to GetChildWithURI(uri, deep, caseInsensitive, _retval); } \
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window) override { return _to DownloadAllForOffline(listener, window); } \
  NS_IMETHOD EnableNotifications(int32_t notificationType, bool enable, bool dbBatching) override { return _to EnableNotifications(notificationType, enable, dbBatching); } \
  NS_IMETHOD IsCommandEnabled(const nsACString & command, bool *_retval) override { return _to IsCommandEnabled(command, _retval); } \
  NS_IMETHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, bool caseInsensitive, bool *_retval) override { return _to MatchOrChangeFilterDestination(folder, caseInsensitive, _retval); } \
  NS_IMETHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, bool *_retval) override { return _to ConfirmFolderDeletionForFilter(msgWindow, _retval); } \
  NS_IMETHOD AlertFilterChanged(nsIMsgWindow *msgWindow) override { return _to AlertFilterChanged(msgWindow); } \
  NS_IMETHOD ThrowAlertMsg(const char * msgName, nsIMsgWindow *msgWindow) override { return _to ThrowAlertMsg(msgName, msgWindow); } \
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char * msgName, nsAString & _retval) override { return _to GetStringWithFolderNameFromBundle(msgName, _retval); } \
  NS_IMETHOD NotifyCompactCompleted(void) override { return _to NotifyCompactCompleted(); } \
  NS_IMETHOD CompareSortKeys(nsIMsgFolder *msgFolder, int32_t *_retval) override { return _to CompareSortKeys(msgFolder, _retval); } \
  NS_IMETHOD GetSortKey(uint32_t *length, uint8_t **key) override { return _to GetSortKey(length, key); } \
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings) override { return _to GetRetentionSettings(aRetentionSettings); } \
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings *aRetentionSettings) override { return _to SetRetentionSettings(aRetentionSettings); } \
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings) override { return _to GetDownloadSettings(aDownloadSettings); } \
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings *aDownloadSettings) override { return _to SetDownloadSettings(aDownloadSettings); } \
  NS_IMETHOD CallFilterPlugins(nsIMsgWindow *aMsgWindow, bool *_retval) override { return _to CallFilterPlugins(aMsgWindow, _retval); } \
  NS_IMETHOD GetSortOrder(int32_t *aSortOrder) override { return _to GetSortOrder(aSortOrder); } \
  NS_IMETHOD SetSortOrder(int32_t aSortOrder) override { return _to SetSortOrder(aSortOrder); } \
  NS_IMETHOD GetDBTransferInfo(nsIDBFolderInfo * *aDBTransferInfo) override { return _to GetDBTransferInfo(aDBTransferInfo); } \
  NS_IMETHOD SetDBTransferInfo(nsIDBFolderInfo *aDBTransferInfo) override { return _to SetDBTransferInfo(aDBTransferInfo); } \
  NS_IMETHOD GetStringProperty(const char * propertyName, nsACString & _retval) override { return _to GetStringProperty(propertyName, _retval); } \
  NS_IMETHOD SetStringProperty(const char * propertyName, const nsACString & propertyValue) override { return _to SetStringProperty(propertyName, propertyValue); } \
  NS_IMETHOD GetLastMessageLoaded(nsMsgKey *aLastMessageLoaded) override { return _to GetLastMessageLoaded(aLastMessageLoaded); } \
  NS_IMETHOD SetLastMessageLoaded(nsMsgKey aLastMessageLoaded) override { return _to SetLastMessageLoaded(aLastMessageLoaded); } \
  NS_IMETHOD GetURI(nsACString & aURI) override { return _to GetURI(aURI); } \
  NS_IMETHOD GetName(nsAString & aName) override { return _to GetName(aName); } \
  NS_IMETHOD SetName(const nsAString & aName) override { return _to SetName(aName); } \
  NS_IMETHOD GetPrettyName(nsAString & aPrettyName) override { return _to GetPrettyName(aPrettyName); } \
  NS_IMETHOD SetPrettyName(const nsAString & aPrettyName) override { return _to SetPrettyName(aPrettyName); } \
  NS_IMETHOD GetAbbreviatedName(nsAString & aAbbreviatedName) override { return _to GetAbbreviatedName(aAbbreviatedName); } \
  NS_IMETHOD GetParent(nsIMsgFolder * *aParent) override { return _to GetParent(aParent); } \
  NS_IMETHOD SetParent(nsIMsgFolder *aParent) override { return _to SetParent(aParent); } \
  NS_IMETHOD GetSubFolders(nsISimpleEnumerator * *aSubFolders) override { return _to GetSubFolders(aSubFolders); } \
  NS_IMETHOD GetHasSubFolders(bool *aHasSubFolders) override { return _to GetHasSubFolders(aHasSubFolders); } \
  NS_IMETHOD GetNumSubFolders(uint32_t *aNumSubFolders) override { return _to GetNumSubFolders(aNumSubFolders); } \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, bool *_retval) override { return _to IsAncestorOf(folder, _retval); } \
  NS_IMETHOD ContainsChildNamed(const nsAString & name, bool *_retval) override { return _to ContainsChildNamed(name, _retval); } \
  NS_IMETHOD GetChildNamed(const nsAString & aName, nsIMsgFolder * *_retval) override { return _to GetChildNamed(aName, _retval); } \
  NS_IMETHOD FindSubFolder(const nsACString & escapedSubFolderName, nsIMsgFolder * *_retval) override { return _to FindSubFolder(escapedSubFolderName, _retval); } \
  NS_IMETHOD AddFolderListener(nsIFolderListener *listener) override { return _to AddFolderListener(listener); } \
  NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener) override { return _to RemoveFolderListener(listener); } \
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const nsACString & oldValue, const nsACString & newValue) override { return _to NotifyPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyIntPropertyChanged(nsIAtom *property, int64_t oldValue, int64_t newValue) override { return _to NotifyIntPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyBoolPropertyChanged(nsIAtom *property, bool oldValue, bool newValue) override { return _to NotifyBoolPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, uint32_t oldValue, uint32_t newValue) override { return _to NotifyPropertyFlagChanged(item, property, oldValue, newValue); } \
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const nsAString & oldValue, const nsAString & newValue) override { return _to NotifyUnicharPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyItemAdded(nsISupports *item) override { return _to NotifyItemAdded(item); } \
  NS_IMETHOD NotifyItemRemoved(nsISupports *item) override { return _to NotifyItemRemoved(item); } \
  NS_IMETHOD NotifyFolderEvent(nsIAtom *event) override { return _to NotifyFolderEvent(event); } \
  NS_IMETHOD GetDescendants(nsIArray * *aDescendants) override { return _to GetDescendants(aDescendants); } \
  NS_IMETHOD ListDescendants(nsIMutableArray *aDescendants) override { return _to ListDescendants(aDescendants); } \
  NS_IMETHOD Shutdown(bool shutdownChildren) override { return _to Shutdown(shutdownChildren); } \
  NS_IMETHOD GetInVFEditSearchScope(bool *aInVFEditSearchScope) override { return _to GetInVFEditSearchScope(aInVFEditSearchScope); } \
  NS_IMETHOD SetInVFEditSearchScope(bool aSearchThisFolder, bool aSetOnSubFolders) override { return _to SetInVFEditSearchScope(aSearchThisFolder, aSetOnSubFolders); } \
  NS_IMETHOD CopyDataToOutputStreamForAppend(nsIInputStream *aIStream, int32_t aLength, nsIOutputStream *outputStream) override { return _to CopyDataToOutputStreamForAppend(aIStream, aLength, outputStream); } \
  NS_IMETHOD CopyDataDone(void) override { return _to CopyDataDone(); } \
  NS_IMETHOD SetJunkScoreForMessages(nsIArray *aMessages, const nsACString & aJunkScore) override { return _to SetJunkScoreForMessages(aMessages, aJunkScore); } \
  NS_IMETHOD ApplyRetentionSettings(void) override { return _to ApplyRetentionSettings(); } \
  NS_IMETHOD FetchMsgPreviewText(nsMsgKey *aKeysToFetch, uint32_t aNumKeys, bool aLocalOnly, nsIUrlListener *aUrlListener, bool *_retval) override { return _to FetchMsgPreviewText(aKeysToFetch, aNumKeys, aLocalOnly, aUrlListener, _retval); } \
  NS_IMETHOD AddKeywordsToMessages(nsIArray *aMessages, const nsACString & aKeywords) override { return _to AddKeywordsToMessages(aMessages, aKeywords); } \
  NS_IMETHOD RemoveKeywordsFromMessages(nsIArray *aMessages, const nsACString & aKeywords) override { return _to RemoveKeywordsFromMessages(aMessages, aKeywords); } \
  NS_IMETHOD GetMsgTextFromStream(nsIInputStream *aStream, const nsACString & aCharset, uint32_t aBytesToRead, uint32_t aMaxOutputLen, bool aCompressQuotes, bool aStripHTMLTags, nsACString & aContentType, nsACString & _retval) override { return _to GetMsgTextFromStream(aStream, aCharset, aBytesToRead, aMaxOutputLen, aCompressQuotes, aStripHTMLTags, aContentType, _retval); } \
  NS_IMETHOD ConvertMsgSnippetToPlainText(const nsAString & aMessageText, nsAString & _retval) override { return _to ConvertMsgSnippetToPlainText(aMessageText, _retval); } \
  NS_IMETHOD GetCustomIdentity(nsIMsgIdentity * *aCustomIdentity) override { return _to GetCustomIdentity(aCustomIdentity); } \
  NS_IMETHOD GetProcessingFlags(nsMsgKey msgKey, uint32_t *_retval) override { return _to GetProcessingFlags(msgKey, _retval); } \
  NS_IMETHOD OrProcessingFlags(nsMsgKey msgKey, uint32_t mask) override { return _to OrProcessingFlags(msgKey, mask); } \
  NS_IMETHOD AndProcessingFlags(nsMsgKey msgKey, uint32_t mask) override { return _to AndProcessingFlags(msgKey, mask); } \
  NS_IMETHOD GetInheritedStringProperty(const char * propertyName, nsACString & _retval) override { return _to GetInheritedStringProperty(propertyName, _retval); } \
  NS_IMETHOD SetForcePropertyEmpty(const char * propertyName, bool aForcePropertyEmpty) override { return _to SetForcePropertyEmpty(propertyName, aForcePropertyEmpty); } \
  NS_IMETHOD GetForcePropertyEmpty(const char * propertyName, bool *_retval) override { return _to GetForcePropertyEmpty(propertyName, _retval); } \
  NS_IMETHOD GetMsgStore(nsIMsgPluggableStore * *aMsgStore) override { return _to GetMsgStore(aMsgStore); } \
  NS_IMETHOD GetIncomingServerType(nsACString & aIncomingServerType) override { return _to GetIncomingServerType(aIncomingServerType); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGFOLDER(_to) \
  NS_IMETHOD GetMessages(nsISimpleEnumerator * *aMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessages(aMessages); } \
  NS_IMETHOD StartFolderLoading(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->StartFolderLoading(); } \
  NS_IMETHOD EndFolderLoading(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EndFolderLoading(); } \
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateFolder(aWindow); } \
  NS_IMETHOD GetPrettiestName(nsAString & aPrettiestName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPrettiestName(aPrettiestName); } \
  NS_IMETHOD GetFolderURL(nsACString & aFolderURL) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolderURL(aFolderURL); } \
  NS_IMETHOD GetShowDeletedMessages(bool *aShowDeletedMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShowDeletedMessages(aShowDeletedMessages); } \
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServer(aServer); } \
  NS_IMETHOD GetIsServer(bool *aIsServer) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsServer(aIsServer); } \
  NS_IMETHOD GetCanSubscribe(bool *aCanSubscribe) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanSubscribe(aCanSubscribe); } \
  NS_IMETHOD GetCanFileMessages(bool *aCanFileMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanFileMessages(aCanFileMessages); } \
  NS_IMETHOD GetNoSelect(bool *aNoSelect) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNoSelect(aNoSelect); } \
  NS_IMETHOD GetImapShared(bool *aImapShared) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetImapShared(aImapShared); } \
  NS_IMETHOD GetCanDeleteMessages(bool *aCanDeleteMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanDeleteMessages(aCanDeleteMessages); } \
  NS_IMETHOD GetCanCreateSubfolders(bool *aCanCreateSubfolders) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanCreateSubfolders(aCanCreateSubfolders); } \
  NS_IMETHOD GetCanRename(bool *aCanRename) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanRename(aCanRename); } \
  NS_IMETHOD GetCanCompact(bool *aCanCompact) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanCompact(aCanCompact); } \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRootFolder(aRootFolder); } \
  NS_IMETHOD GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterList(msgWindow, _retval); } \
  NS_IMETHOD SetFilterList(nsIMsgFilterList *filterList) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilterList(filterList); } \
  NS_IMETHOD GetEditableFilterList(nsIMsgWindow *aMsgWindow, nsIMsgFilterList * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEditableFilterList(aMsgWindow, _retval); } \
  NS_IMETHOD SetEditableFilterList(nsIMsgFilterList *aFilterList) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEditableFilterList(aFilterList); } \
  NS_IMETHOD ForceDBClosed(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ForceDBClosed(); } \
  NS_IMETHOD CloseAndBackupFolderDB(const nsACString & newName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CloseAndBackupFolderDB(newName); } \
  NS_IMETHOD Delete(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Delete(); } \
  NS_IMETHOD DeleteSubFolders(nsIArray *folders, nsIMsgWindow *msgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSubFolders(folders, msgWindow); } \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, bool deleteStorage, nsIMsgWindow *msgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->PropagateDelete(folder, deleteStorage, msgWindow); } \
  NS_IMETHOD RecursiveDelete(bool deleteStorage, nsIMsgWindow *msgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RecursiveDelete(deleteStorage, msgWindow); } \
  NS_IMETHOD CreateSubfolder(const nsAString & folderName, nsIMsgWindow *msgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateSubfolder(folderName, msgWindow); } \
  NS_IMETHOD AddSubfolder(const nsAString & aFolderName, nsIMsgFolder * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddSubfolder(aFolderName, _retval); } \
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateStorageIfMissing(urlListener); } \
  NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Compact(aListener, aMsgWindow); } \
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, bool aCompactOfflineAlso) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CompactAll(aListener, aMsgWindow, aCompactOfflineAlso); } \
  NS_IMETHOD CompactAllOfflineStores(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsIArray *aOfflineFolderArray) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CompactAllOfflineStores(aListener, aMsgWindow, aOfflineFolderArray); } \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EmptyTrash(aMsgWindow, aListener); } \
  NS_IMETHOD Rename(const nsAString & name, nsIMsgWindow *msgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Rename(name, msgWindow); } \
  NS_IMETHOD RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RenameSubFolders(msgWindow, oldFolder); } \
  NS_IMETHOD GenerateUniqueSubfolderName(const nsAString & prefix, nsIMsgFolder *otherFolder, nsAString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GenerateUniqueSubfolderName(prefix, otherFolder, _retval); } \
  NS_IMETHOD UpdateSummaryTotals(bool force) override { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateSummaryTotals(force); } \
  NS_IMETHOD SummaryChanged(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SummaryChanged(); } \
  NS_IMETHOD GetNumUnread(bool deep, int32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumUnread(deep, _retval); } \
  NS_IMETHOD GetTotalMessages(bool deep, int32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTotalMessages(deep, _retval); } \
  NS_IMETHOD GetNumPendingUnread(int32_t *aNumPendingUnread) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumPendingUnread(aNumPendingUnread); } \
  NS_IMETHOD GetNumPendingTotalMessages(int32_t *aNumPendingTotalMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumPendingTotalMessages(aNumPendingTotalMessages); } \
  NS_IMETHOD ChangeNumPendingUnread(int32_t delta) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ChangeNumPendingUnread(delta); } \
  NS_IMETHOD ChangeNumPendingTotalMessages(int32_t delta) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ChangeNumPendingTotalMessages(delta); } \
  NS_IMETHOD GetHasNewMessages(bool *aHasNewMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD SetHasNewMessages(bool aHasNewMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD GetHasFolderOrSubfolderNewMessages(bool *aHasFolderOrSubfolderNewMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasFolderOrSubfolderNewMessages(aHasFolderOrSubfolderNewMessages); } \
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstNewMessage(aFirstNewMessage); } \
  NS_IMETHOD ClearNewMessages(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearNewMessages(); } \
  NS_IMETHOD GetExpungedBytes(int64_t *aExpungedBytes) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExpungedBytes(aExpungedBytes); } \
  NS_IMETHOD GetDeletable(bool *aDeletable) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeletable(aDeletable); } \
  NS_IMETHOD GetDisplayRecipients(bool *aDisplayRecipients) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisplayRecipients(aDisplayRecipients); } \
  NS_IMETHOD GetManyHeadersToDownload(bool *aManyHeadersToDownload) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetManyHeadersToDownload(aManyHeadersToDownload); } \
  NS_IMETHOD GetRelativePathName(nsACString & aRelativePathName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRelativePathName(aRelativePathName); } \
  NS_IMETHOD GetSizeOnDisk(int64_t *aSizeOnDisk) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSizeOnDisk(aSizeOnDisk); } \
  NS_IMETHOD SetSizeOnDisk(int64_t aSizeOnDisk) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSizeOnDisk(aSizeOnDisk); } \
  NS_IMETHOD GetUsername(nsACString & aUsername) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUsername(aUsername); } \
  NS_IMETHOD GetHostname(nsACString & aHostname) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostname(aHostname); } \
  NS_IMETHOD SetFlag(uint32_t flag) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlag(flag); } \
  NS_IMETHOD ClearFlag(uint32_t flag) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearFlag(flag); } \
  NS_IMETHOD GetFlag(uint32_t flag, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlag(flag, _retval); } \
  NS_IMETHOD ToggleFlag(uint32_t flag) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ToggleFlag(flag); } \
  NS_IMETHOD OnFlagChange(uint32_t flag) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnFlagChange(flag); } \
  NS_IMETHOD GetFlags(uint32_t *aFlags) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(uint32_t aFlags) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlags(aFlags); } \
  NS_IMETHOD GetFolderWithFlags(uint32_t flags, nsIMsgFolder * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolderWithFlags(flags, _retval); } \
  NS_IMETHOD GetFoldersWithFlags(uint32_t flags, nsIArray * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFoldersWithFlags(flags, _retval); } \
  NS_IMETHOD ListFoldersWithFlags(uint32_t flags, nsIMutableArray *folders) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ListFoldersWithFlags(flags, folders); } \
  NS_IMETHOD IsSpecialFolder(uint32_t flags, bool checkAncestors, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSpecialFolder(flags, checkAncestors, _retval); } \
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUriForMsg(msgHdr, _retval); } \
  NS_IMETHOD DeleteMessages(nsIArray *messages, nsIMsgWindow *msgWindow, bool deleteStorage, bool isMove, nsIMsgCopyServiceListener *listener, bool allowUndo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteMessages(messages, msgWindow, deleteStorage, isMove, listener, allowUndo); } \
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, bool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, bool isFolder, bool allowUndo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyMessages(srcFolder, messages, isMove, msgWindow, listener, isFolder, allowUndo); } \
  NS_IMETHOD CopyFolder(nsIMsgFolder *srcFolder, bool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyFolder(srcFolder, isMoveFolder, msgWindow, listener); } \
  NS_IMETHOD CopyFileMessage(nsIFile *file, nsIMsgDBHdr *msgToReplace, bool isDraft, uint32_t newMsgFlags, const nsACString & aKeywords, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyFileMessage(file, msgToReplace, isDraft, newMsgFlags, aKeywords, msgWindow, listener); } \
  NS_IMETHOD AcquireSemaphore(nsISupports *semHolder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AcquireSemaphore(semHolder); } \
  NS_IMETHOD ReleaseSemaphore(nsISupports *semHolder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ReleaseSemaphore(semHolder); } \
  NS_IMETHOD TestSemaphore(nsISupports *semHolder, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TestSemaphore(semHolder, _retval); } \
  NS_IMETHOD GetLocked(bool *aLocked) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocked(aLocked); } \
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow, nsIUrlListener *aListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewMessages(aWindow, aListener); } \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, bool deep) override { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteToFolderCache(folderCache, deep); } \
  NS_IMETHOD GetCharset(nsACString & aCharset) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const nsACString & aCharset) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCharset(aCharset); } \
  NS_IMETHOD GetCharsetOverride(bool *aCharsetOverride) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCharsetOverride(aCharsetOverride); } \
  NS_IMETHOD SetCharsetOverride(bool aCharsetOverride) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCharsetOverride(aCharsetOverride); } \
  NS_IMETHOD GetBiffState(uint32_t *aBiffState) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBiffState(aBiffState); } \
  NS_IMETHOD SetBiffState(uint32_t aBiffState) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBiffState(aBiffState); } \
  NS_IMETHOD GetNumNewMessages(bool deep, int32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumNewMessages(deep, _retval); } \
  NS_IMETHOD SetNumNewMessages(int32_t numNewMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNumNewMessages(numNewMessages); } \
  NS_IMETHOD GetGettingNewMessages(bool *aGettingNewMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD SetGettingNewMessages(bool aGettingNewMessages) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD GetFilePath(nsIFile * *aFilePath) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilePath(aFilePath); } \
  NS_IMETHOD SetFilePath(nsIFile *aFilePath) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilePath(aFilePath); } \
  NS_IMETHOD GetSummaryFile(nsIFile * *aSummaryFile) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSummaryFile(aSummaryFile); } \
  NS_IMETHOD GetBaseMessageURI(nsACString & aBaseMessageURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBaseMessageURI(aBaseMessageURI); } \
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GenerateMessageURI(msgKey, _retval); } \
  NS_IMETHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddMessageDispositionState(aMessage, aDispositionFlag); } \
  NS_IMETHOD MarkMessagesRead(nsIArray *messages, bool markRead) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkMessagesRead(messages, markRead); } \
  NS_IMETHOD MarkAllMessagesRead(nsIMsgWindow *aMsgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkAllMessagesRead(aMsgWindow); } \
  NS_IMETHOD MarkMessagesFlagged(nsIArray *messages, bool markFlagged) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkMessagesFlagged(messages, markFlagged); } \
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkThreadRead(thread); } \
  NS_IMETHOD SetLabelForMessages(nsIArray *messages, nsMsgLabelValue label) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLabelForMessages(messages, label); } \
  NS_IMETHOD GetMsgDatabase(nsIMsgDatabase * *aMsgDatabase) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMsgDatabase(aMsgDatabase); } \
  NS_IMETHOD SetMsgDatabase(nsIMsgDatabase *aMsgDatabase) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMsgDatabase(aMsgDatabase); } \
  NS_IMETHOD GetDatabaseOpen(bool *aDatabaseOpen) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDatabaseOpen(aDatabaseOpen); } \
  NS_IMETHOD GetBackupMsgDatabase(nsIMsgDatabase * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBackupMsgDatabase(_retval); } \
  NS_IMETHOD RemoveBackupMsgDatabase(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveBackupMsgDatabase(); } \
  NS_IMETHOD OpenBackupMsgDatabase(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenBackupMsgDatabase(); } \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo * *folderInfo, nsIMsgDatabase * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDBFolderInfoAndDB(folderInfo, _retval); } \
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageHeader(msgKey, _retval); } \
  NS_IMETHOD GetSupportsOffline(bool *aSupportsOffline) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsOffline(aSupportsOffline); } \
  NS_IMETHOD ShouldStoreMsgOffline(nsMsgKey msgKey, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ShouldStoreMsgOffline(msgKey, _retval); } \
  NS_IMETHOD HasMsgOffline(nsMsgKey msgKey, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMsgOffline(msgKey, _retval); } \
  NS_IMETHOD GetOfflineFileStream(nsMsgKey aMsgKey, int64_t *aOffset, uint32_t *aSize, nsIInputStream * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOfflineFileStream(aMsgKey, aOffset, aSize, _retval); } \
  NS_IMETHOD GetOfflineMsgFolder(nsMsgKey msgKey, nsIMsgFolder * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOfflineMsgFolder(msgKey, _retval); } \
  NS_IMETHOD GetOfflineStoreOutputStream(nsIMsgDBHdr *aHdr, nsIOutputStream * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOfflineStoreOutputStream(aHdr, _retval); } \
  NS_IMETHOD GetMsgInputStream(nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMsgInputStream(aHdr, aReusable, _retval); } \
  NS_IMETHOD DownloadMessagesForOffline(nsIArray *messages, nsIMsgWindow *window) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DownloadMessagesForOffline(messages, window); } \
  NS_IMETHOD GetChildWithURI(const nsACString & uri, bool deep, bool caseInsensitive, nsIMsgFolder * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildWithURI(uri, deep, caseInsensitive, _retval); } \
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DownloadAllForOffline(listener, window); } \
  NS_IMETHOD EnableNotifications(int32_t notificationType, bool enable, bool dbBatching) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableNotifications(notificationType, enable, dbBatching); } \
  NS_IMETHOD IsCommandEnabled(const nsACString & command, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsCommandEnabled(command, _retval); } \
  NS_IMETHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, bool caseInsensitive, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MatchOrChangeFilterDestination(folder, caseInsensitive, _retval); } \
  NS_IMETHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ConfirmFolderDeletionForFilter(msgWindow, _retval); } \
  NS_IMETHOD AlertFilterChanged(nsIMsgWindow *msgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AlertFilterChanged(msgWindow); } \
  NS_IMETHOD ThrowAlertMsg(const char * msgName, nsIMsgWindow *msgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ThrowAlertMsg(msgName, msgWindow); } \
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char * msgName, nsAString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStringWithFolderNameFromBundle(msgName, _retval); } \
  NS_IMETHOD NotifyCompactCompleted(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyCompactCompleted(); } \
  NS_IMETHOD CompareSortKeys(nsIMsgFolder *msgFolder, int32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CompareSortKeys(msgFolder, _retval); } \
  NS_IMETHOD GetSortKey(uint32_t *length, uint8_t **key) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSortKey(length, key); } \
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRetentionSettings(aRetentionSettings); } \
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings *aRetentionSettings) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRetentionSettings(aRetentionSettings); } \
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDownloadSettings(aDownloadSettings); } \
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings *aDownloadSettings) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDownloadSettings(aDownloadSettings); } \
  NS_IMETHOD CallFilterPlugins(nsIMsgWindow *aMsgWindow, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CallFilterPlugins(aMsgWindow, _retval); } \
  NS_IMETHOD GetSortOrder(int32_t *aSortOrder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSortOrder(aSortOrder); } \
  NS_IMETHOD SetSortOrder(int32_t aSortOrder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSortOrder(aSortOrder); } \
  NS_IMETHOD GetDBTransferInfo(nsIDBFolderInfo * *aDBTransferInfo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDBTransferInfo(aDBTransferInfo); } \
  NS_IMETHOD SetDBTransferInfo(nsIDBFolderInfo *aDBTransferInfo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDBTransferInfo(aDBTransferInfo); } \
  NS_IMETHOD GetStringProperty(const char * propertyName, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStringProperty(propertyName, _retval); } \
  NS_IMETHOD SetStringProperty(const char * propertyName, const nsACString & propertyValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStringProperty(propertyName, propertyValue); } \
  NS_IMETHOD GetLastMessageLoaded(nsMsgKey *aLastMessageLoaded) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastMessageLoaded(aLastMessageLoaded); } \
  NS_IMETHOD SetLastMessageLoaded(nsMsgKey aLastMessageLoaded) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastMessageLoaded(aLastMessageLoaded); } \
  NS_IMETHOD GetURI(nsACString & aURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetURI(aURI); } \
  NS_IMETHOD GetName(nsAString & aName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const nsAString & aName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetPrettyName(nsAString & aPrettyName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPrettyName(aPrettyName); } \
  NS_IMETHOD SetPrettyName(const nsAString & aPrettyName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPrettyName(aPrettyName); } \
  NS_IMETHOD GetAbbreviatedName(nsAString & aAbbreviatedName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAbbreviatedName(aAbbreviatedName); } \
  NS_IMETHOD GetParent(nsIMsgFolder * *aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD SetParent(nsIMsgFolder *aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetParent(aParent); } \
  NS_IMETHOD GetSubFolders(nsISimpleEnumerator * *aSubFolders) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSubFolders(aSubFolders); } \
  NS_IMETHOD GetHasSubFolders(bool *aHasSubFolders) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasSubFolders(aHasSubFolders); } \
  NS_IMETHOD GetNumSubFolders(uint32_t *aNumSubFolders) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumSubFolders(aNumSubFolders); } \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsAncestorOf(folder, _retval); } \
  NS_IMETHOD ContainsChildNamed(const nsAString & name, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ContainsChildNamed(name, _retval); } \
  NS_IMETHOD GetChildNamed(const nsAString & aName, nsIMsgFolder * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildNamed(aName, _retval); } \
  NS_IMETHOD FindSubFolder(const nsACString & escapedSubFolderName, nsIMsgFolder * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FindSubFolder(escapedSubFolderName, _retval); } \
  NS_IMETHOD AddFolderListener(nsIFolderListener *listener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFolderListener(listener); } \
  NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFolderListener(listener); } \
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const nsACString & oldValue, const nsACString & newValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyIntPropertyChanged(nsIAtom *property, int64_t oldValue, int64_t newValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyIntPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyBoolPropertyChanged(nsIAtom *property, bool oldValue, bool newValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyBoolPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, uint32_t oldValue, uint32_t newValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyPropertyFlagChanged(item, property, oldValue, newValue); } \
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const nsAString & oldValue, const nsAString & newValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyUnicharPropertyChanged(property, oldValue, newValue); } \
  NS_IMETHOD NotifyItemAdded(nsISupports *item) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyItemAdded(item); } \
  NS_IMETHOD NotifyItemRemoved(nsISupports *item) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyItemRemoved(item); } \
  NS_IMETHOD NotifyFolderEvent(nsIAtom *event) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyFolderEvent(event); } \
  NS_IMETHOD GetDescendants(nsIArray * *aDescendants) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescendants(aDescendants); } \
  NS_IMETHOD ListDescendants(nsIMutableArray *aDescendants) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ListDescendants(aDescendants); } \
  NS_IMETHOD Shutdown(bool shutdownChildren) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Shutdown(shutdownChildren); } \
  NS_IMETHOD GetInVFEditSearchScope(bool *aInVFEditSearchScope) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInVFEditSearchScope(aInVFEditSearchScope); } \
  NS_IMETHOD SetInVFEditSearchScope(bool aSearchThisFolder, bool aSetOnSubFolders) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInVFEditSearchScope(aSearchThisFolder, aSetOnSubFolders); } \
  NS_IMETHOD CopyDataToOutputStreamForAppend(nsIInputStream *aIStream, int32_t aLength, nsIOutputStream *outputStream) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyDataToOutputStreamForAppend(aIStream, aLength, outputStream); } \
  NS_IMETHOD CopyDataDone(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyDataDone(); } \
  NS_IMETHOD SetJunkScoreForMessages(nsIArray *aMessages, const nsACString & aJunkScore) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetJunkScoreForMessages(aMessages, aJunkScore); } \
  NS_IMETHOD ApplyRetentionSettings(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ApplyRetentionSettings(); } \
  NS_IMETHOD FetchMsgPreviewText(nsMsgKey *aKeysToFetch, uint32_t aNumKeys, bool aLocalOnly, nsIUrlListener *aUrlListener, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchMsgPreviewText(aKeysToFetch, aNumKeys, aLocalOnly, aUrlListener, _retval); } \
  NS_IMETHOD AddKeywordsToMessages(nsIArray *aMessages, const nsACString & aKeywords) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddKeywordsToMessages(aMessages, aKeywords); } \
  NS_IMETHOD RemoveKeywordsFromMessages(nsIArray *aMessages, const nsACString & aKeywords) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveKeywordsFromMessages(aMessages, aKeywords); } \
  NS_IMETHOD GetMsgTextFromStream(nsIInputStream *aStream, const nsACString & aCharset, uint32_t aBytesToRead, uint32_t aMaxOutputLen, bool aCompressQuotes, bool aStripHTMLTags, nsACString & aContentType, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMsgTextFromStream(aStream, aCharset, aBytesToRead, aMaxOutputLen, aCompressQuotes, aStripHTMLTags, aContentType, _retval); } \
  NS_IMETHOD ConvertMsgSnippetToPlainText(const nsAString & aMessageText, nsAString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ConvertMsgSnippetToPlainText(aMessageText, _retval); } \
  NS_IMETHOD GetCustomIdentity(nsIMsgIdentity * *aCustomIdentity) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCustomIdentity(aCustomIdentity); } \
  NS_IMETHOD GetProcessingFlags(nsMsgKey msgKey, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessingFlags(msgKey, _retval); } \
  NS_IMETHOD OrProcessingFlags(nsMsgKey msgKey, uint32_t mask) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OrProcessingFlags(msgKey, mask); } \
  NS_IMETHOD AndProcessingFlags(nsMsgKey msgKey, uint32_t mask) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AndProcessingFlags(msgKey, mask); } \
  NS_IMETHOD GetInheritedStringProperty(const char * propertyName, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInheritedStringProperty(propertyName, _retval); } \
  NS_IMETHOD SetForcePropertyEmpty(const char * propertyName, bool aForcePropertyEmpty) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetForcePropertyEmpty(propertyName, aForcePropertyEmpty); } \
  NS_IMETHOD GetForcePropertyEmpty(const char * propertyName, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetForcePropertyEmpty(propertyName, _retval); } \
  NS_IMETHOD GetMsgStore(nsIMsgPluggableStore * *aMsgStore) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMsgStore(aMsgStore); } \
  NS_IMETHOD GetIncomingServerType(nsACString & aIncomingServerType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIncomingServerType(aIncomingServerType); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMsgFolder : public nsIMsgFolder
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGFOLDER

  nsMsgFolder();

private:
  ~nsMsgFolder();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMsgFolder, nsIMsgFolder)

nsMsgFolder::nsMsgFolder()
{
  /* member initializers and constructor code */
}

nsMsgFolder::~nsMsgFolder()
{
  /* destructor code */
}

/* readonly attribute nsISimpleEnumerator messages; */
NS_IMETHODIMP nsMsgFolder::GetMessages(nsISimpleEnumerator * *aMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void startFolderLoading (); */
NS_IMETHODIMP nsMsgFolder::StartFolderLoading()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void endFolderLoading (); */
NS_IMETHODIMP nsMsgFolder::EndFolderLoading()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateFolder (in nsIMsgWindow aWindow); */
NS_IMETHODIMP nsMsgFolder::UpdateFolder(nsIMsgWindow *aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AString prettiestName; */
NS_IMETHODIMP nsMsgFolder::GetPrettiestName(nsAString & aPrettiestName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString folderURL; */
NS_IMETHODIMP nsMsgFolder::GetFolderURL(nsACString & aFolderURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean showDeletedMessages; */
NS_IMETHODIMP nsMsgFolder::GetShowDeletedMessages(bool *aShowDeletedMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgIncomingServer server; */
NS_IMETHODIMP nsMsgFolder::GetServer(nsIMsgIncomingServer * *aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isServer; */
NS_IMETHODIMP nsMsgFolder::GetIsServer(bool *aIsServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canSubscribe; */
NS_IMETHODIMP nsMsgFolder::GetCanSubscribe(bool *aCanSubscribe)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canFileMessages; */
NS_IMETHODIMP nsMsgFolder::GetCanFileMessages(bool *aCanFileMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean noSelect; */
NS_IMETHODIMP nsMsgFolder::GetNoSelect(bool *aNoSelect)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean imapShared; */
NS_IMETHODIMP nsMsgFolder::GetImapShared(bool *aImapShared)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canDeleteMessages; */
NS_IMETHODIMP nsMsgFolder::GetCanDeleteMessages(bool *aCanDeleteMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canCreateSubfolders; */
NS_IMETHODIMP nsMsgFolder::GetCanCreateSubfolders(bool *aCanCreateSubfolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canRename; */
NS_IMETHODIMP nsMsgFolder::GetCanRename(bool *aCanRename)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canCompact; */
NS_IMETHODIMP nsMsgFolder::GetCanCompact(bool *aCanCompact)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgFolder rootFolder; */
NS_IMETHODIMP nsMsgFolder::GetRootFolder(nsIMsgFolder * *aRootFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFilterList getFilterList (in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFilterList (in nsIMsgFilterList filterList); */
NS_IMETHODIMP nsMsgFolder::SetFilterList(nsIMsgFilterList *filterList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFilterList getEditableFilterList (in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFolder::GetEditableFilterList(nsIMsgWindow *aMsgWindow, nsIMsgFilterList * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setEditableFilterList (in nsIMsgFilterList aFilterList); */
NS_IMETHODIMP nsMsgFolder::SetEditableFilterList(nsIMsgFilterList *aFilterList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ForceDBClosed (); */
NS_IMETHODIMP nsMsgFolder::ForceDBClosed()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void closeAndBackupFolderDB (in ACString newName); */
NS_IMETHODIMP nsMsgFolder::CloseAndBackupFolderDB(const nsACString & newName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Delete (); */
NS_IMETHODIMP nsMsgFolder::Delete()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteSubFolders (in nsIArray folders, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::DeleteSubFolders(nsIArray *folders, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void propagateDelete (in nsIMsgFolder folder, in boolean deleteStorage, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::PropagateDelete(nsIMsgFolder *folder, bool deleteStorage, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void recursiveDelete (in boolean deleteStorage, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::RecursiveDelete(bool deleteStorage, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createSubfolder (in AString folderName, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::CreateSubfolder(const nsAString & folderName, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder addSubfolder (in AString aFolderName); */
NS_IMETHODIMP nsMsgFolder::AddSubfolder(const nsAString & aFolderName, nsIMsgFolder * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createStorageIfMissing (in nsIUrlListener urlListener); */
NS_IMETHODIMP nsMsgFolder::CreateStorageIfMissing(nsIUrlListener *urlListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void compact (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFolder::Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void compactAll (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow, in boolean aCompactOfflineAlso); */
NS_IMETHODIMP nsMsgFolder::CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, bool aCompactOfflineAlso)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void compactAllOfflineStores (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow, in nsIArray aOfflineFolderArray); */
NS_IMETHODIMP nsMsgFolder::CompactAllOfflineStores(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsIArray *aOfflineFolderArray)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void emptyTrash (in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener); */
NS_IMETHODIMP nsMsgFolder::EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void rename (in AString name, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::Rename(const nsAString & name, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void renameSubFolders (in nsIMsgWindow msgWindow, in nsIMsgFolder oldFolder); */
NS_IMETHODIMP nsMsgFolder::RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString generateUniqueSubfolderName (in AString prefix, in nsIMsgFolder otherFolder); */
NS_IMETHODIMP nsMsgFolder::GenerateUniqueSubfolderName(const nsAString & prefix, nsIMsgFolder *otherFolder, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateSummaryTotals (in boolean force); */
NS_IMETHODIMP nsMsgFolder::UpdateSummaryTotals(bool force)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void summaryChanged (); */
NS_IMETHODIMP nsMsgFolder::SummaryChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long getNumUnread (in boolean deep); */
NS_IMETHODIMP nsMsgFolder::GetNumUnread(bool deep, int32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long getTotalMessages (in boolean deep); */
NS_IMETHODIMP nsMsgFolder::GetTotalMessages(bool deep, int32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long numPendingUnread; */
NS_IMETHODIMP nsMsgFolder::GetNumPendingUnread(int32_t *aNumPendingUnread)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long numPendingTotalMessages; */
NS_IMETHODIMP nsMsgFolder::GetNumPendingTotalMessages(int32_t *aNumPendingTotalMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void changeNumPendingUnread (in long delta); */
NS_IMETHODIMP nsMsgFolder::ChangeNumPendingUnread(int32_t delta)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void changeNumPendingTotalMessages (in long delta); */
NS_IMETHODIMP nsMsgFolder::ChangeNumPendingTotalMessages(int32_t delta)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean hasNewMessages; */
NS_IMETHODIMP nsMsgFolder::GetHasNewMessages(bool *aHasNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetHasNewMessages(bool aHasNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean hasFolderOrSubfolderNewMessages; */
NS_IMETHODIMP nsMsgFolder::GetHasFolderOrSubfolderNewMessages(bool *aHasFolderOrSubfolderNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgDBHdr firstNewMessage; */
NS_IMETHODIMP nsMsgFolder::GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearNewMessages (); */
NS_IMETHODIMP nsMsgFolder::ClearNewMessages()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long expungedBytes; */
NS_IMETHODIMP nsMsgFolder::GetExpungedBytes(int64_t *aExpungedBytes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean deletable; */
NS_IMETHODIMP nsMsgFolder::GetDeletable(bool *aDeletable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean displayRecipients; */
NS_IMETHODIMP nsMsgFolder::GetDisplayRecipients(bool *aDisplayRecipients)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean manyHeadersToDownload; */
NS_IMETHODIMP nsMsgFolder::GetManyHeadersToDownload(bool *aManyHeadersToDownload)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString relativePathName; */
NS_IMETHODIMP nsMsgFolder::GetRelativePathName(nsACString & aRelativePathName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long long sizeOnDisk; */
NS_IMETHODIMP nsMsgFolder::GetSizeOnDisk(int64_t *aSizeOnDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetSizeOnDisk(int64_t aSizeOnDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString username; */
NS_IMETHODIMP nsMsgFolder::GetUsername(nsACString & aUsername)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString hostname; */
NS_IMETHODIMP nsMsgFolder::GetHostname(nsACString & aHostname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFlag (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::SetFlag(uint32_t flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearFlag (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::ClearFlag(uint32_t flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean getFlag (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::GetFlag(uint32_t flag, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void toggleFlag (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::ToggleFlag(uint32_t flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onFlagChange (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::OnFlagChange(uint32_t flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long flags; */
NS_IMETHODIMP nsMsgFolder::GetFlags(uint32_t *aFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetFlags(uint32_t aFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder getFolderWithFlags (in unsigned long flags); */
NS_IMETHODIMP nsMsgFolder::GetFolderWithFlags(uint32_t flags, nsIMsgFolder * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIArray getFoldersWithFlags (in unsigned long flags); */
NS_IMETHODIMP nsMsgFolder::GetFoldersWithFlags(uint32_t flags, nsIArray * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void listFoldersWithFlags (in unsigned long flags, in nsIMutableArray folders); */
NS_IMETHODIMP nsMsgFolder::ListFoldersWithFlags(uint32_t flags, nsIMutableArray *folders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isSpecialFolder (in unsigned long flags, [optional] in boolean checkAncestors); */
NS_IMETHODIMP nsMsgFolder::IsSpecialFolder(uint32_t flags, bool checkAncestors, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getUriForMsg (in nsIMsgDBHdr msgHdr); */
NS_IMETHODIMP nsMsgFolder::GetUriForMsg(nsIMsgDBHdr *msgHdr, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteMessages (in nsIArray messages, in nsIMsgWindow msgWindow, in boolean deleteStorage, in boolean isMove, in nsIMsgCopyServiceListener listener, in boolean allowUndo); */
NS_IMETHODIMP nsMsgFolder::DeleteMessages(nsIArray *messages, nsIMsgWindow *msgWindow, bool deleteStorage, bool isMove, nsIMsgCopyServiceListener *listener, bool allowUndo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyMessages (in nsIMsgFolder srcFolder, in nsIArray messages, in boolean isMove, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener, in boolean isFolder, in boolean allowUndo); */
NS_IMETHODIMP nsMsgFolder::CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, bool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, bool isFolder, bool allowUndo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyFolder (in nsIMsgFolder srcFolder, in boolean isMoveFolder, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
NS_IMETHODIMP nsMsgFolder::CopyFolder(nsIMsgFolder *srcFolder, bool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyFileMessage (in nsIFile file, in nsIMsgDBHdr msgToReplace, in boolean isDraft, in unsigned long newMsgFlags, in ACString aKeywords, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
NS_IMETHODIMP nsMsgFolder::CopyFileMessage(nsIFile *file, nsIMsgDBHdr *msgToReplace, bool isDraft, uint32_t newMsgFlags, const nsACString & aKeywords, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void acquireSemaphore (in nsISupports semHolder); */
NS_IMETHODIMP nsMsgFolder::AcquireSemaphore(nsISupports *semHolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void releaseSemaphore (in nsISupports semHolder); */
NS_IMETHODIMP nsMsgFolder::ReleaseSemaphore(nsISupports *semHolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean testSemaphore (in nsISupports semHolder); */
NS_IMETHODIMP nsMsgFolder::TestSemaphore(nsISupports *semHolder, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean locked; */
NS_IMETHODIMP nsMsgFolder::GetLocked(bool *aLocked)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNewMessages (in nsIMsgWindow aWindow, in nsIUrlListener aListener); */
NS_IMETHODIMP nsMsgFolder::GetNewMessages(nsIMsgWindow *aWindow, nsIUrlListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writeToFolderCache (in nsIMsgFolderCache folderCache, in boolean deep); */
NS_IMETHODIMP nsMsgFolder::WriteToFolderCache(nsIMsgFolderCache *folderCache, bool deep)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString charset; */
NS_IMETHODIMP nsMsgFolder::GetCharset(nsACString & aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetCharset(const nsACString & aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean charsetOverride; */
NS_IMETHODIMP nsMsgFolder::GetCharsetOverride(bool *aCharsetOverride)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetCharsetOverride(bool aCharsetOverride)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long biffState; */
NS_IMETHODIMP nsMsgFolder::GetBiffState(uint32_t *aBiffState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetBiffState(uint32_t aBiffState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long getNumNewMessages (in boolean deep); */
NS_IMETHODIMP nsMsgFolder::GetNumNewMessages(bool deep, int32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setNumNewMessages (in long numNewMessages); */
NS_IMETHODIMP nsMsgFolder::SetNumNewMessages(int32_t numNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean gettingNewMessages; */
NS_IMETHODIMP nsMsgFolder::GetGettingNewMessages(bool *aGettingNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetGettingNewMessages(bool aGettingNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIFile filePath; */
NS_IMETHODIMP nsMsgFolder::GetFilePath(nsIFile * *aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetFilePath(nsIFile *aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIFile summaryFile; */
NS_IMETHODIMP nsMsgFolder::GetSummaryFile(nsIFile * *aSummaryFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString baseMessageURI; */
NS_IMETHODIMP nsMsgFolder::GetBaseMessageURI(nsACString & aBaseMessageURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString generateMessageURI (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::GenerateMessageURI(nsMsgKey msgKey, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addMessageDispositionState (in nsIMsgDBHdr aMessage, in nsMsgDispositionState aDispositionFlag); */
NS_IMETHODIMP nsMsgFolder::AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markMessagesRead (in nsIArray messages, in boolean markRead); */
NS_IMETHODIMP nsMsgFolder::MarkMessagesRead(nsIArray *messages, bool markRead)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markAllMessagesRead (in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFolder::MarkAllMessagesRead(nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markMessagesFlagged (in nsIArray messages, in boolean markFlagged); */
NS_IMETHODIMP nsMsgFolder::MarkMessagesFlagged(nsIArray *messages, bool markFlagged)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markThreadRead (in nsIMsgThread thread); */
NS_IMETHODIMP nsMsgFolder::MarkThreadRead(nsIMsgThread *thread)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setLabelForMessages (in nsIArray messages, in nsMsgLabelValue label); */
NS_IMETHODIMP nsMsgFolder::SetLabelForMessages(nsIArray *messages, nsMsgLabelValue label)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgDatabase msgDatabase; */
NS_IMETHODIMP nsMsgFolder::GetMsgDatabase(nsIMsgDatabase * *aMsgDatabase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetMsgDatabase(nsIMsgDatabase *aMsgDatabase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean databaseOpen; */
NS_IMETHODIMP nsMsgFolder::GetDatabaseOpen(bool *aDatabaseOpen)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDatabase getBackupMsgDatabase (); */
NS_IMETHODIMP nsMsgFolder::GetBackupMsgDatabase(nsIMsgDatabase * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeBackupMsgDatabase (); */
NS_IMETHODIMP nsMsgFolder::RemoveBackupMsgDatabase()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openBackupMsgDatabase (); */
NS_IMETHODIMP nsMsgFolder::OpenBackupMsgDatabase()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDatabase getDBFolderInfoAndDB (out nsIDBFolderInfo folderInfo); */
NS_IMETHODIMP nsMsgFolder::GetDBFolderInfoAndDB(nsIDBFolderInfo * *folderInfo, nsIMsgDatabase * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDBHdr GetMessageHeader (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean supportsOffline; */
NS_IMETHODIMP nsMsgFolder::GetSupportsOffline(bool *aSupportsOffline)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean shouldStoreMsgOffline (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::ShouldStoreMsgOffline(nsMsgKey msgKey, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean hasMsgOffline (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::HasMsgOffline(nsMsgKey msgKey, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIInputStream getOfflineFileStream (in nsMsgKey aMsgKey, out long long aOffset, out unsigned long aSize); */
NS_IMETHODIMP nsMsgFolder::GetOfflineFileStream(nsMsgKey aMsgKey, int64_t *aOffset, uint32_t *aSize, nsIInputStream * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder GetOfflineMsgFolder (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::GetOfflineMsgFolder(nsMsgKey msgKey, nsIMsgFolder * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIOutputStream getOfflineStoreOutputStream (in nsIMsgDBHdr aHdr); */
NS_IMETHODIMP nsMsgFolder::GetOfflineStoreOutputStream(nsIMsgDBHdr *aHdr, nsIOutputStream * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIInputStream getMsgInputStream (in nsIMsgDBHdr aHdr, out boolean aReusable); */
NS_IMETHODIMP nsMsgFolder::GetMsgInputStream(nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void DownloadMessagesForOffline (in nsIArray messages, in nsIMsgWindow window); */
NS_IMETHODIMP nsMsgFolder::DownloadMessagesForOffline(nsIArray *messages, nsIMsgWindow *window)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder getChildWithURI (in ACString uri, in boolean deep, in boolean caseInsensitive); */
NS_IMETHODIMP nsMsgFolder::GetChildWithURI(const nsACString & uri, bool deep, bool caseInsensitive, nsIMsgFolder * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void downloadAllForOffline (in nsIUrlListener listener, in nsIMsgWindow window); */
NS_IMETHODIMP nsMsgFolder::DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableNotifications (in long notificationType, in boolean enable, in boolean dbBatching); */
NS_IMETHODIMP nsMsgFolder::EnableNotifications(int32_t notificationType, bool enable, bool dbBatching)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isCommandEnabled (in ACString command); */
NS_IMETHODIMP nsMsgFolder::IsCommandEnabled(const nsACString & command, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean matchOrChangeFilterDestination (in nsIMsgFolder folder, in boolean caseInsensitive); */
NS_IMETHODIMP nsMsgFolder::MatchOrChangeFilterDestination(nsIMsgFolder *folder, bool caseInsensitive, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean confirmFolderDeletionForFilter (in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void alertFilterChanged (in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::AlertFilterChanged(nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void throwAlertMsg (in string msgName, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::ThrowAlertMsg(const char * msgName, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getStringWithFolderNameFromBundle (in string msgName); */
NS_IMETHODIMP nsMsgFolder::GetStringWithFolderNameFromBundle(const char * msgName, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyCompactCompleted (); */
NS_IMETHODIMP nsMsgFolder::NotifyCompactCompleted()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long compareSortKeys (in nsIMsgFolder msgFolder); */
NS_IMETHODIMP nsMsgFolder::CompareSortKeys(nsIMsgFolder *msgFolder, int32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSortKey (out unsigned long length, [array, size_is (length), retval] out octet key); */
NS_IMETHODIMP nsMsgFolder::GetSortKey(uint32_t *length, uint8_t **key)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgRetentionSettings retentionSettings; */
NS_IMETHODIMP nsMsgFolder::GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetRetentionSettings(nsIMsgRetentionSettings *aRetentionSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgDownloadSettings downloadSettings; */
NS_IMETHODIMP nsMsgFolder::GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetDownloadSettings(nsIMsgDownloadSettings *aDownloadSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean callFilterPlugins (in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFolder::CallFilterPlugins(nsIMsgWindow *aMsgWindow, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long sortOrder; */
NS_IMETHODIMP nsMsgFolder::GetSortOrder(int32_t *aSortOrder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetSortOrder(int32_t aSortOrder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIDBFolderInfo dBTransferInfo; */
NS_IMETHODIMP nsMsgFolder::GetDBTransferInfo(nsIDBFolderInfo * *aDBTransferInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetDBTransferInfo(nsIDBFolderInfo *aDBTransferInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getStringProperty (in string propertyName); */
NS_IMETHODIMP nsMsgFolder::GetStringProperty(const char * propertyName, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setStringProperty (in string propertyName, in ACString propertyValue); */
NS_IMETHODIMP nsMsgFolder::SetStringProperty(const char * propertyName, const nsACString & propertyValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgKey lastMessageLoaded; */
NS_IMETHODIMP nsMsgFolder::GetLastMessageLoaded(nsMsgKey *aLastMessageLoaded)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetLastMessageLoaded(nsMsgKey aLastMessageLoaded)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString URI; */
NS_IMETHODIMP nsMsgFolder::GetURI(nsACString & aURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString name; */
NS_IMETHODIMP nsMsgFolder::GetName(nsAString & aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetName(const nsAString & aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString prettyName; */
NS_IMETHODIMP nsMsgFolder::GetPrettyName(nsAString & aPrettyName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetPrettyName(const nsAString & aPrettyName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AString abbreviatedName; */
NS_IMETHODIMP nsMsgFolder::GetAbbreviatedName(nsAString & aAbbreviatedName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgFolder parent; */
NS_IMETHODIMP nsMsgFolder::GetParent(nsIMsgFolder * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetParent(nsIMsgFolder *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISimpleEnumerator subFolders; */
NS_IMETHODIMP nsMsgFolder::GetSubFolders(nsISimpleEnumerator * *aSubFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean hasSubFolders; */
NS_IMETHODIMP nsMsgFolder::GetHasSubFolders(bool *aHasSubFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long numSubFolders; */
NS_IMETHODIMP nsMsgFolder::GetNumSubFolders(uint32_t *aNumSubFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isAncestorOf (in nsIMsgFolder folder); */
NS_IMETHODIMP nsMsgFolder::IsAncestorOf(nsIMsgFolder *folder, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean containsChildNamed (in AString name); */
NS_IMETHODIMP nsMsgFolder::ContainsChildNamed(const nsAString & name, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder getChildNamed (in AString aName); */
NS_IMETHODIMP nsMsgFolder::GetChildNamed(const nsAString & aName, nsIMsgFolder * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder findSubFolder (in ACString escapedSubFolderName); */
NS_IMETHODIMP nsMsgFolder::FindSubFolder(const nsACString & escapedSubFolderName, nsIMsgFolder * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void AddFolderListener (in nsIFolderListener listener); */
NS_IMETHODIMP nsMsgFolder::AddFolderListener(nsIFolderListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void RemoveFolderListener (in nsIFolderListener listener); */
NS_IMETHODIMP nsMsgFolder::RemoveFolderListener(nsIFolderListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyPropertyChanged (in nsIAtom property, in ACString oldValue, in ACString newValue); */
NS_IMETHODIMP nsMsgFolder::NotifyPropertyChanged(nsIAtom *property, const nsACString & oldValue, const nsACString & newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyIntPropertyChanged (in nsIAtom property, in long long oldValue, in long long newValue); */
NS_IMETHODIMP nsMsgFolder::NotifyIntPropertyChanged(nsIAtom *property, int64_t oldValue, int64_t newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyBoolPropertyChanged (in nsIAtom property, in boolean oldValue, in boolean newValue); */
NS_IMETHODIMP nsMsgFolder::NotifyBoolPropertyChanged(nsIAtom *property, bool oldValue, bool newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyPropertyFlagChanged (in nsIMsgDBHdr item, in nsIAtom property, in unsigned long oldValue, in unsigned long newValue); */
NS_IMETHODIMP nsMsgFolder::NotifyPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, uint32_t oldValue, uint32_t newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyUnicharPropertyChanged (in nsIAtom property, in AString oldValue, in AString newValue); */
NS_IMETHODIMP nsMsgFolder::NotifyUnicharPropertyChanged(nsIAtom *property, const nsAString & oldValue, const nsAString & newValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyItemAdded (in nsISupports item); */
NS_IMETHODIMP nsMsgFolder::NotifyItemAdded(nsISupports *item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyItemRemoved (in nsISupports item); */
NS_IMETHODIMP nsMsgFolder::NotifyItemRemoved(nsISupports *item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyFolderEvent (in nsIAtom event); */
NS_IMETHODIMP nsMsgFolder::NotifyFolderEvent(nsIAtom *event)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIArray descendants; */
NS_IMETHODIMP nsMsgFolder::GetDescendants(nsIArray * *aDescendants)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ListDescendants (in nsIMutableArray aDescendants); */
NS_IMETHODIMP nsMsgFolder::ListDescendants(nsIMutableArray *aDescendants)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Shutdown (in boolean shutdownChildren); */
NS_IMETHODIMP nsMsgFolder::Shutdown(bool shutdownChildren)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean inVFEditSearchScope; */
NS_IMETHODIMP nsMsgFolder::GetInVFEditSearchScope(bool *aInVFEditSearchScope)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setInVFEditSearchScope (in boolean aSearchThisFolder, in boolean aSetOnSubFolders); */
NS_IMETHODIMP nsMsgFolder::SetInVFEditSearchScope(bool aSearchThisFolder, bool aSetOnSubFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyDataToOutputStreamForAppend (in nsIInputStream aIStream, in long aLength, in nsIOutputStream outputStream); */
NS_IMETHODIMP nsMsgFolder::CopyDataToOutputStreamForAppend(nsIInputStream *aIStream, int32_t aLength, nsIOutputStream *outputStream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyDataDone (); */
NS_IMETHODIMP nsMsgFolder::CopyDataDone()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setJunkScoreForMessages (in nsIArray aMessages, in ACString aJunkScore); */
NS_IMETHODIMP nsMsgFolder::SetJunkScoreForMessages(nsIArray *aMessages, const nsACString & aJunkScore)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void applyRetentionSettings (); */
NS_IMETHODIMP nsMsgFolder::ApplyRetentionSettings()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean fetchMsgPreviewText ([array, size_is (aNumKeys)] in nsMsgKey aKeysToFetch, in unsigned long aNumKeys, in boolean aLocalOnly, in nsIUrlListener aUrlListener); */
NS_IMETHODIMP nsMsgFolder::FetchMsgPreviewText(nsMsgKey *aKeysToFetch, uint32_t aNumKeys, bool aLocalOnly, nsIUrlListener *aUrlListener, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addKeywordsToMessages (in nsIArray aMessages, in ACString aKeywords); */
NS_IMETHODIMP nsMsgFolder::AddKeywordsToMessages(nsIArray *aMessages, const nsACString & aKeywords)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeKeywordsFromMessages (in nsIArray aMessages, in ACString aKeywords); */
NS_IMETHODIMP nsMsgFolder::RemoveKeywordsFromMessages(nsIArray *aMessages, const nsACString & aKeywords)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AUTF8String getMsgTextFromStream (in nsIInputStream aStream, in ACString aCharset, in unsigned long aBytesToRead, in unsigned long aMaxOutputLen, in boolean aCompressQuotes, in boolean aStripHTMLTags, out ACString aContentType); */
NS_IMETHODIMP nsMsgFolder::GetMsgTextFromStream(nsIInputStream *aStream, const nsACString & aCharset, uint32_t aBytesToRead, uint32_t aMaxOutputLen, bool aCompressQuotes, bool aStripHTMLTags, nsACString & aContentType, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString convertMsgSnippetToPlainText (in AString aMessageText); */
NS_IMETHODIMP nsMsgFolder::ConvertMsgSnippetToPlainText(const nsAString & aMessageText, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgIdentity customIdentity; */
NS_IMETHODIMP nsMsgFolder::GetCustomIdentity(nsIMsgIdentity * *aCustomIdentity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long getProcessingFlags (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::GetProcessingFlags(nsMsgKey msgKey, uint32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void orProcessingFlags (in nsMsgKey msgKey, in unsigned long mask); */
NS_IMETHODIMP nsMsgFolder::OrProcessingFlags(nsMsgKey msgKey, uint32_t mask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void andProcessingFlags (in nsMsgKey msgKey, in unsigned long mask); */
NS_IMETHODIMP nsMsgFolder::AndProcessingFlags(nsMsgKey msgKey, uint32_t mask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getInheritedStringProperty (in string propertyName); */
NS_IMETHODIMP nsMsgFolder::GetInheritedStringProperty(const char * propertyName, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setForcePropertyEmpty (in string propertyName, in boolean aForcePropertyEmpty); */
NS_IMETHODIMP nsMsgFolder::SetForcePropertyEmpty(const char * propertyName, bool aForcePropertyEmpty)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean getForcePropertyEmpty (in string propertyName); */
NS_IMETHODIMP nsMsgFolder::GetForcePropertyEmpty(const char * propertyName, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgPluggableStore msgStore; */
NS_IMETHODIMP nsMsgFolder::GetMsgStore(nsIMsgPluggableStore * *aMsgStore)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString incomingServerType; */
NS_IMETHODIMP nsMsgFolder::GetIncomingServerType(nsACString & aIncomingServerType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_nsIMsgFolder_h__ */
