/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM 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_nsIMsgThread_h__
#include "nsIMsgThread.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 nsIMsgFolderCacheElement; /* forward declaration */

class nsITransport; /* forward declaration */

class nsIFile; /* forward declaration */

class nsIOutputStream; /* forward declaration */

class nsIInputStream; /* forward declaration */

class nsILocalFile; /* forward declaration */

class nsIMsgIdentity; /* forward declaration */

class nsIArray; /* forward declaration */

class nsIMutableArray; /* forward declaration */

class nsISupportsArray; /* forward declaration */

class nsIMsgPluggableStore; /* forward declaration */

typedef PRInt32  nsMsgBiffState;

typedef PRInt32  nsMsgDispositionState;


/* starting interface:    nsIMsgFolder */
#define NS_IMSGFOLDER_IID_STR "8b8c5bf8-82e3-4415-bcf3-6029ab4777c5"

#define NS_IMSGFOLDER_IID \
  {0x8b8c5bf8, 0x82e3, 0x4415, \
    { 0xbc, 0xf3, 0x60, 0x29, 0xab, 0x47, 0x77, 0xc5 }}

class NS_NO_VTABLE NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetMessages(nsISimpleEnumerator * *aMessages) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /* readonly attribute unsigned long expungedBytes; */
  NS_SCRIPTABLE NS_IMETHOD GetExpungedBytes(PRUint32 *aExpungedBytes) = 0;

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

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

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

  /* readonly attribute boolean requiresCleanup; */
  NS_SCRIPTABLE NS_IMETHOD GetRequiresCleanup(bool *aRequiresCleanup) = 0;

  /* void clearRequiresCleanup (); */
  NS_SCRIPTABLE NS_IMETHOD ClearRequiresCleanup(void) = 0;

  /* readonly attribute boolean knowsSearchNntpExtension; */
  NS_SCRIPTABLE NS_IMETHOD GetKnowsSearchNntpExtension(bool *aKnowsSearchNntpExtension) = 0;

  /* readonly attribute boolean allowsPosting; */
  NS_SCRIPTABLE NS_IMETHOD GetAllowsPosting(bool *aAllowsPosting) = 0;

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

  /* attribute unsigned long sizeOnDisk; */
  NS_SCRIPTABLE NS_IMETHOD GetSizeOnDisk(PRUint32 *aSizeOnDisk) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetSizeOnDisk(PRUint32 aSizeOnDisk) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

  /* void getExpansionArray (in nsISupportsArray expansionArray); */
  NS_SCRIPTABLE NS_IMETHOD GetExpansionArray(nsISupportsArray *expansionArray) = 0;

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

  /* void deleteMessages (in nsIArray messages, in nsIMsgWindow msgWindow, in boolean deleteStorage, in boolean isMove, in nsIMsgCopyServiceListener listener, in boolean allowUndo); */
  NS_SCRIPTABLE 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_SCRIPTABLE 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_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD CopyFileMessage(nsIFile *file, nsIMsgDBHdr *msgToReplace, bool isDraft, PRUint32 newMsgFlags, const nsACString & aKeywords, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /* nsIInputStream getOfflineFileStream (in nsMsgKey aMsgKey, out long long aOffset, out unsigned long aSize); */
  NS_SCRIPTABLE NS_IMETHOD GetOfflineFileStream(nsMsgKey aMsgKey, PRInt64 *aOffset NS_OUTPARAM, PRUint32 *aSize NS_OUTPARAM, nsIInputStream * *_retval NS_OUTPARAM) = 0;

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

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

  /* readonly attribute nsIInputStream offlineStoreInputStream; */
  NS_SCRIPTABLE NS_IMETHOD GetOfflineStoreInputStream(nsIInputStream * *aOfflineStoreInputStream) = 0;

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

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

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

  enum {
    allMessageCountNotifications = 0U
  };

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

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

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

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

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

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

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

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

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

  /* void getSortKey (out unsigned long length, [array, size_is (length), retval] out octet key); */
  NS_SCRIPTABLE NS_IMETHOD GetSortKey(PRUint32 *length NS_OUTPARAM, PRUint8 **key NS_OUTPARAM) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /* void NotifyBoolPropertyChanged (in nsIAtom property, in boolean oldValue, in boolean newValue); */
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD NotifyPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, PRUint32 oldValue, PRUint32 newValue) = 0;

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

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

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

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

  /* void ListDescendents (in nsISupportsArray descendents); */
  NS_SCRIPTABLE NS_IMETHOD ListDescendents(nsISupportsArray *descendents) = 0;

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

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

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

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

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

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

  /* void applyRetentionSettings (); */
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD FetchMsgPreviewText(nsMsgKey *aKeysToFetch, PRUint32 aNumKeys, bool aLocalOnly, nsIUrlListener *aUrlListener, bool *_retval NS_OUTPARAM) = 0;

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

  /* void removeKeywordsFromMessages (in nsIArray aMessages, in ACString aKeywords); */
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetMsgTextFromStream(nsIInputStream *aStream, const nsACString & aCharset, PRUint32 aBytesToRead, PRUint32 aMaxOutputLen, bool aCompressQuotes, bool aStripHTMLTags, nsACString & aContentType NS_OUTPARAM, nsACString & _retval NS_OUTPARAM) = 0;

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

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

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

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

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

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

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

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

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

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

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

#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_ISUPPORTS1(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 NS_OUTPARAM)
{
    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 NS_OUTPARAM)
{
    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 NS_OUTPARAM)
{
    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 NS_OUTPARAM)
{
    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, PRInt32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long getTotalMessages (in boolean deep); */
NS_IMETHODIMP nsMsgFolder::GetTotalMessages(bool deep, PRInt32 *_retval NS_OUTPARAM)
{
    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 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 unsigned long expungedBytes; */
NS_IMETHODIMP nsMsgFolder::GetExpungedBytes(PRUint32 *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 boolean requiresCleanup; */
NS_IMETHODIMP nsMsgFolder::GetRequiresCleanup(bool *aRequiresCleanup)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* readonly attribute boolean knowsSearchNntpExtension; */
NS_IMETHODIMP nsMsgFolder::GetKnowsSearchNntpExtension(bool *aKnowsSearchNntpExtension)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean allowsPosting; */
NS_IMETHODIMP nsMsgFolder::GetAllowsPosting(bool *aAllowsPosting)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute unsigned long sizeOnDisk; */
NS_IMETHODIMP nsMsgFolder::GetSizeOnDisk(PRUint32 *aSizeOnDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetSizeOnDisk(PRUint32 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(PRUint32 flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

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

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

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

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

/* void getExpansionArray (in nsISupportsArray expansionArray); */
NS_IMETHODIMP nsMsgFolder::GetExpansionArray(nsISupportsArray *expansionArray)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getUriForMsg (in nsIMsgDBHdr msgHdr); */
NS_IMETHODIMP nsMsgFolder::GetUriForMsg(nsIMsgDBHdr *msgHdr, nsACString & _retval NS_OUTPARAM)
{
    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, PRUint32 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 NS_OUTPARAM)
{
    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(PRUint32 *aBiffState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetBiffState(PRUint32 aBiffState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void setNumNewMessages (in long numNewMessages); */
NS_IMETHODIMP nsMsgFolder::SetNumNewMessages(PRInt32 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 nsILocalFile filePath; */
NS_IMETHODIMP nsMsgFolder::GetFilePath(nsILocalFile * *aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetFilePath(nsILocalFile *aFilePath)
{
    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 NS_OUTPARAM)
{
    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;
}

/* nsIMsgDatabase getBackupMsgDatabase (); */
NS_IMETHODIMP nsMsgFolder::GetBackupMsgDatabase(nsIMsgDatabase * *_retval NS_OUTPARAM)
{
    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 NS_OUTPARAM, nsIMsgDatabase * *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDBHdr GetMessageHeader (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr * *_retval NS_OUTPARAM)
{
    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 NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

/* readonly attribute nsIInputStream offlineStoreInputStream; */
NS_IMETHODIMP nsMsgFolder::GetOfflineStoreInputStream(nsIInputStream * *aOfflineStoreInputStream)
{
    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 NS_OUTPARAM)
{
    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(PRInt32 notificationType, bool enable, bool dbBatching)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* boolean confirmFolderDeletionForFilter (in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, bool *_retval NS_OUTPARAM)
{
    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 NS_OUTPARAM)
{
    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, PRInt32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSortKey (out unsigned long length, [array, size_is (length), retval] out octet key); */
NS_IMETHODIMP nsMsgFolder::GetSortKey(PRUint32 *length NS_OUTPARAM, PRUint8 **key NS_OUTPARAM)
{
    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 NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long sortOrder; */
NS_IMETHODIMP nsMsgFolder::GetSortOrder(PRInt32 *aSortOrder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetSortOrder(PRInt32 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 NS_OUTPARAM)
{
    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(PRUint32 *aNumSubFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

/* nsIMsgFolder findSubFolder (in ACString escapedSubFolderName); */
NS_IMETHODIMP nsMsgFolder::FindSubFolder(const nsACString & escapedSubFolderName, nsIMsgFolder * *_retval NS_OUTPARAM)
{
    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 oldValue, in long newValue); */
NS_IMETHODIMP nsMsgFolder::NotifyIntPropertyChanged(nsIAtom *property, PRInt32 oldValue, PRInt32 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, PRUint32 oldValue, PRUint32 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;
}

/* void ListDescendents (in nsISupportsArray descendents); */
NS_IMETHODIMP nsMsgFolder::ListDescendents(nsISupportsArray *descendents)
{
    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, PRInt32 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, PRUint32 aNumKeys, bool aLocalOnly, nsIUrlListener *aUrlListener, bool *_retval NS_OUTPARAM)
{
    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, PRUint32 aBytesToRead, PRUint32 aMaxOutputLen, bool aCompressQuotes, bool aStripHTMLTags, nsACString & aContentType NS_OUTPARAM, nsACString & _retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString convertMsgSnippetToPlainText (in AString aMessageText); */
NS_IMETHODIMP nsMsgFolder::ConvertMsgSnippetToPlainText(const nsAString & aMessageText, nsAString & _retval NS_OUTPARAM)
{
    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, PRUint32 *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* ACString getInheritedStringProperty (in string propertyName); */
NS_IMETHODIMP nsMsgFolder::GetInheritedStringProperty(const char * propertyName, nsACString & _retval NS_OUTPARAM)
{
    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 NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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


#endif /* __gen_nsIMsgFolder_h__ */
