/*
 * 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_nsICollection_h__
#include "nsICollection.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_nsISupportsArray_h__
#include "nsISupportsArray.h"
#endif

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

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

#ifndef __gen_nsIEnumerator_h__
#include "nsIEnumerator.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
#include "nsIMsgDatabase.h"
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 nsIFileSpec; /* forward declaration */

class nsIOutputStream; /* forward declaration */

class nsIInputStream; /* forward declaration */

class nsILocalFile; /* forward declaration */

class nsIMsgIdentity; /* forward declaration */

typedef PRInt32 nsMsgBiffState;

typedef PRInt32 nsMsgDispositionState;


/* starting interface:    nsIMsgFolder */
#define NS_IMSGFOLDER_IID_STR "83d2454c-632e-4d6e-900a-7236a6d2aa9a"

#define NS_IMSGFOLDER_IID \
  {0x83d2454c, 0x632e, 0x4d6e, \
    { 0x90, 0x0a, 0x72, 0x36, 0xa6, 0xd2, 0xaa, 0x9a }}

class NS_NO_VTABLE nsIMsgFolder : public nsICollection {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGFOLDER_IID)

  enum { nsMsgBiffState_NewMail = 0 };

  enum { nsMsgBiffState_NoMail = 1 };

  enum { nsMsgBiffState_Unknown = 2 };

  /* nsISimpleEnumerator getMessages (in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval) = 0;

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

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

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

  /* readonly attribute wstring prettiestName; */
  NS_IMETHOD GetPrettiestName(PRUnichar * *aPrettiestName) = 0;

  /**
   * URL for this folder
   */
  /* readonly attribute string folderURL; */
  NS_IMETHOD GetFolderURL(char * *aFolderURL) = 0;

  /**
   * should probably move to the server
   */
  /* readonly attribute boolean showDeletedMessages; */
  NS_IMETHOD GetShowDeletedMessages(PRBool *aShowDeletedMessages) = 0;

  /**
   * this folder's parent server
   */
  /* readonly attribute nsIMsgIncomingServer server; */
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer) = 0;

  /**
   * is this folder the "phantom" server folder?
   */
  /* readonly attribute boolean isServer; */
  NS_IMETHOD GetIsServer(PRBool *aIsServer) = 0;

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

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

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

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

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

  /**
   * does this folder allow subfolders?
   * for example, newsgroups cannot have subfolders, and the INBOX
   * on some IMAP servers cannot have subfolders
   */
  /* readonly attribute boolean canCreateSubfolders; */
  NS_IMETHOD GetCanCreateSubfolders(PRBool *aCanCreateSubfolders) = 0;

  /**
   * can you change the name of this folder?
   * for example, newsgroups
   * and some special folders can't be renamed
   */
  /* readonly attribute boolean canRename; */
  NS_IMETHOD GetCanRename(PRBool *aCanRename) = 0;

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

  /**
   * the phantom server folder
   */
  /* readonly attribute nsIMsgFolder rootFolder; */
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder) = 0;

  /**
   * function to get the filter list on folder's server 
   * (or in the case of news, the filter list for this newsgroup)'
   */
  /* nsIMsgFilterList getFilterList (in nsIMsgWindow msgWindow); */
  NS_IMETHOD GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList **_retval) = 0;

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

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

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

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

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

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

  /* void createSubfolder (in wstring folderName, in nsIMsgWindow msgWindow); */
  NS_IMETHOD CreateSubfolder(const PRUnichar *folderName, nsIMsgWindow *msgWindow) = 0;

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

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

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

  /* void compactAll (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow, in nsISupportsArray aFolderArray, in boolean aCompactOfflineAlso, in nsISupportsArray aOfflineFolderArray); */
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsISupportsArray *aFolderArray, PRBool aCompactOfflineAlso, nsISupportsArray *aOfflineFolderArray) = 0;

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

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

  /**
   * change the name of the folder
   *
   * @param name the new name of the folder
   */
  /* void rename (in wstring name, in nsIMsgWindow msgWindow); */
  NS_IMETHOD Rename(const PRUnichar *name, nsIMsgWindow *msgWindow) = 0;

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

  /**
   * looks in immediate children of this folder for the given name
   *
   * @param name the name of the target subfolder
   */
  /* boolean containsChildNamed (in wstring name); */
  NS_IMETHOD ContainsChildNamed(const PRUnichar *name, PRBool *_retval) = 0;

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

  /* wstring generateUniqueSubfolderName (in wstring prefix, in nsIMsgFolder otherFolder); */
  NS_IMETHOD GenerateUniqueSubfolderName(const PRUnichar *prefix, nsIMsgFolder *otherFolder, PRUnichar **_retval) = 0;

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

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

  /**
   * get the total number of unread messages in this folder,
   * or in all subfolders
   *
   * @param deep if true, descends into all subfolders and gets a grand total
   */
  /* long getNumUnread (in boolean deep); */
  NS_IMETHOD GetNumUnread(PRBool deep, PRInt32 *_retval) = 0;

  /**
   * get the total number of messages in this folder,
   * or in all subfolders
   *
   * @param deep if true, descends into all subfolders and gets a grand total
   */
  /* long getTotalMessages (in boolean deep); */
  NS_IMETHOD GetTotalMessages(PRBool deep, PRInt32 *_retval) = 0;

  /**
  * does this folder have new messages
  *
  */
  /* attribute boolean hasNewMessages; */
  NS_IMETHOD GetHasNewMessages(PRBool *aHasNewMessages) = 0;
  NS_IMETHOD SetHasNewMessages(PRBool aHasNewMessages) = 0;

  /**
   * return the first new message in the folder
   *
   */
  /* readonly attribute nsIMsgDBHdr firstNewMessage; */
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage) = 0;

  /**
   * clear new status flag of all of the new messages
   *
   */
  /* void clearNewMessages (); */
  NS_IMETHOD ClearNewMessages(void) = 0;

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

  /**
   * can this folder be deleted?
   * for example, special folders cannot be deleted
   */
  /* readonly attribute boolean deletable; */
  NS_IMETHOD GetDeletable(PRBool *aDeletable) = 0;

  /**
   * should we be displaying recipients instead of the sender?
   * for example, in the Sent folder, recipients are more relevant
   * than the sender
   */
  /* readonly attribute boolean displayRecipients; */
  NS_IMETHOD GetDisplayRecipients(PRBool *aDisplayRecipients) = 0;

  /**
   * used to determine if it will take a long time to download all
   * the headers in this folder - so that we can do folder notifications
   * synchronously instead of asynchronously
   */
  /* readonly attribute boolean manyHeadersToDownload; */
  NS_IMETHOD GetManyHeadersToDownload(PRBool *aManyHeadersToDownload) = 0;

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

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

  /**
   * this should go into a news-specific interface
   */
  /* readonly attribute boolean knowsSearchNntpExtension; */
  NS_IMETHOD GetKnowsSearchNntpExtension(PRBool *aKnowsSearchNntpExtension) = 0;

  /**
   * this should go into a news-specific interface
   */
  /* readonly attribute boolean allowsPosting; */
  NS_IMETHOD GetAllowsPosting(PRBool *aAllowsPosting) = 0;

  /* readonly attribute string relativePathName; */
  NS_IMETHOD GetRelativePathName(char * *aRelativePathName) = 0;

  /**
   * size of this folder on disk (not including .msf file)
   * for imap, it's the sum of the size of the messages
   */
  /* attribute unsigned long sizeOnDisk; */
  NS_IMETHOD GetSizeOnDisk(PRUint32 *aSizeOnDisk) = 0;
  NS_IMETHOD SetSizeOnDisk(PRUint32 aSizeOnDisk) = 0;

  /* readonly attribute string username; */
  NS_IMETHOD GetUsername(char * *aUsername) = 0;

  /* readonly attribute string hostname; */
  NS_IMETHOD GetHostname(char * *aHostname) = 0;

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

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

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

  /* void setPrefFlag (); */
  NS_IMETHOD SetPrefFlag(void) = 0;

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

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

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

  /* nsIMsgFolder getFoldersWithFlag (in unsigned long flags, in unsigned long resultsize, out unsigned long numFolders); */
  NS_IMETHOD GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval) = 0;

  /* nsISupportsArray getAllFoldersWithFlag (in unsigned long aFlag); */
  NS_IMETHOD GetAllFoldersWithFlag(PRUint32 aFlag, nsISupportsArray **_retval) = 0;

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

  /* string getUriForMsg (in nsIMsgDBHdr msgHdr); */
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, char **_retval) = 0;

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

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

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

  /* void copyFileMessage (in nsIFileSpec fileSpec, in nsIMsgDBHdr msgToReplace, in boolean isDraft, in unsigned long newMsgFlags, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
  NS_IMETHOD CopyFileMessage(nsIFileSpec *fileSpec, nsIMsgDBHdr *msgToReplace, PRBool isDraft, PRUint32 newMsgFlags, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) = 0;

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

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

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

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

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

  /**
   * write out summary data for this folder
   * to the given folder cache (i.e. panacea.dat)
   */
  /* void writeToFolderCache (in nsIMsgFolderCache folderCache, in boolean deep); */
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, PRBool deep) = 0;

  /**
   * the charset of this folder
   */
  /* attribute string charset; */
  NS_IMETHOD GetCharset(char * *aCharset) = 0;
  NS_IMETHOD SetCharset(const char * aCharset) = 0;

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

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

  /**
   * the number of new messages since this folder was last visited
   * @param deep if true, descends into all subfolders and gets a grand total
   */
  /* long getNumNewMessages (in boolean deep); */
  NS_IMETHOD GetNumNewMessages(PRBool deep, PRInt32 *_retval) = 0;

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

  /**
   * verbose description of the new messages in this folder
   */
  /* readonly attribute wstring newMessagesNotificationDescription; */
  NS_IMETHOD GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription) = 0;

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

  /**
   * local path of this folder
   */
  /* attribute nsIFileSpec path; */
  NS_IMETHOD GetPath(nsIFileSpec * *aPath) = 0;
  NS_IMETHOD SetPath(nsIFileSpec * aPath) = 0;

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

  /* readonly attribute string baseMessageURI; */
  NS_IMETHOD GetBaseMessageURI(char * *aBaseMessageURI) = 0;

  /* string generateMessageURI (in nsMsgKey msgKey); */
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, char **_retval) = 0;

  enum { nsMsgDispositionState_None = -1 };

  enum { nsMsgDispositionState_Replied = 0 };

  enum { nsMsgDispositionState_Forwarded = 1 };

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

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

  /* void markAllMessagesRead (); */
  NS_IMETHOD MarkAllMessagesRead(void) = 0;

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

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

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

  /* nsIMsgDatabase getMsgDatabase (in nsIMsgWindow msgWindow); */
  NS_IMETHOD GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval) = 0;

  /* void setMsgDatabase (in nsIMsgDatabase msgDatabase); */
  NS_IMETHOD SetMsgDatabase(nsIMsgDatabase *msgDatabase) = 0;

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

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

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

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

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

  /* nsIInputStream getOfflineFileStream (in nsMsgKey msgKey, out PRUint32 offset, out PRUint32 size); */
  NS_IMETHOD GetOfflineFileStream(nsMsgKey msgKey, PRUint32 *offset, PRUint32 *size, nsIInputStream **_retval) = 0;

  /* readonly attribute nsIOutputStream offlineStoreOutputStream; */
  NS_IMETHOD GetOfflineStoreOutputStream(nsIOutputStream * *aOfflineStoreOutputStream) = 0;

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

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

  /* nsIMsgFolder getChildWithURI (in string uri, in boolean deep, in boolean caseInsensitive); */
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, PRBool caseInsensitive, nsIMsgFolder **_retval) = 0;

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

  /**
   *  Turn notifications on/off for various notification types. Currently only 
   *  supporting allMessageCountNotifications which refers to both total and 
   *  unread message counts.
   */
  enum { allMessageCountNotifications = 0U };

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

  /* boolean isCommandEnabled (in string command); */
  NS_IMETHOD IsCommandEnabled(const char *command, PRBool *_retval) = 0;

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

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

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

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

  /* wstring getStringWithFolderNameFromBundle (in string msgName); */
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char *msgName, PRUnichar **_retval) = 0;

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

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

  /* [noscript] void getSortKey (out octet_ptr key, out unsigned long length); */
  NS_IMETHOD GetSortKey(PRUint8 * *key, PRUint32 *length) = 0;

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

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

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

  /**
   * used for order in the folder pane, folder pickers, etc.
   */
  /* attribute long sortOrder; */
  NS_IMETHOD GetSortOrder(PRInt32 *aSortOrder) = 0;
  NS_IMETHOD SetSortOrder(PRInt32 aSortOrder) = 0;

  /** 
   * used to determine if we persist the close / open state of this folder or not
   */
  /* [noscript] readonly attribute boolean persistElided; */
  NS_IMETHOD GetPersistElided(PRBool *aPersistElided) = 0;

  /* readonly attribute nsIMsgFolder parentMsgFolder; */
  NS_IMETHOD GetParentMsgFolder(nsIMsgFolder * *aParentMsgFolder) = 0;

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

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

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

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

  /* readonly attribute string URI; */
  NS_IMETHOD GetURI(char * *aURI) = 0;

  /* attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;
  NS_IMETHOD SetName(const PRUnichar * aName) = 0;

  /* attribute wstring prettyName; */
  NS_IMETHOD GetPrettyName(PRUnichar * *aPrettyName) = 0;
  NS_IMETHOD SetPrettyName(const PRUnichar * aPrettyName) = 0;

  /* readonly attribute wstring abbreviatedName; */
  NS_IMETHOD GetAbbreviatedName(PRUnichar * *aAbbreviatedName) = 0;

  /* nsISupports getChildNamed (in wstring name); */
  NS_IMETHOD GetChildNamed(const PRUnichar *name, nsISupports **_retval) = 0;

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

  /* nsIEnumerator GetSubFolders (); */
  NS_IMETHOD GetSubFolders(nsIEnumerator **_retval) = 0;

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

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

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

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

  /* void NotifyPropertyChanged (in nsIAtom property, in string oldValue, in string newValue); */
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const char *oldValue, const char *newValue) = 0;

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

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

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

  /* void NotifyUnicharPropertyChanged (in nsIAtom property, in wstring oldValue, in wstring newValue); */
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const PRUnichar *oldValue, const PRUnichar *newValue) = 0;

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

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

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

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

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

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

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

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

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

  /* void setJunkScoreForMessages (in nsISupportsArray aMessages, in string aJunkScore); */
  NS_IMETHOD SetJunkScoreForMessages(nsISupportsArray *aMessages, const char *aJunkScore) = 0;

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

  /** 
   * Get the beginning of the message bodies for the passed in keys and store 
   * them in the msg hdr property "preview". This is intended for 
   * new mail alerts, title tips on folders with new messages, and perhaps 
   * titletips/message preview in the thread pane.
   *
   * @param aKeysToFetch   keys of msgs to fetch
   * @param aNumKeys       number of keys to fetch
   * @param aLocalOnly     whether to fetch msgs from server (imap msgs might 
   *                       be in memory cache from junk filter)
   * @param aUrlListener   url listener to notify if we run url to fetch msgs
   *
   * @result aAsyncResults if true, we ran a url to fetch one or more of msg bodies
   *
   */
  /* void fetchMsgPreviewText ([array, size_is (aNumKeys)] in nsMsgKey aKeysToFetch, in unsigned long aNumKeys, in boolean aLocalOnly, in nsIUrlListener aUrlListener, out boolean aAsyncResults); */
  NS_IMETHOD FetchMsgPreviewText(nsMsgKey *aKeysToFetch, PRUint32 aNumKeys, PRBool aLocalOnly, nsIUrlListener *aUrlListener, PRBool *aAsyncResults) = 0;

  /* void addKeywordsToMessages (in nsISupportsArray aMessages, in string aKeywords); */
  NS_IMETHOD AddKeywordsToMessages(nsISupportsArray *aMessages, const char *aKeywords) = 0;

  /* void removeKeywordsFromMessages (in nsISupportsArray aMessages, in string aKeywords); */
  NS_IMETHOD RemoveKeywordsFromMessages(nsISupportsArray *aMessages, const char *aKeywords) = 0;

  /**
   * Extract the message preview text from aStream, storing it as a string property
   * on aMsgHdr.
   * 
   * @param aMsgHdr
   * @param aStream
   * @param aBytesToRead number of bytes to read from the stream   
   * @param aMaxOutputLen desired length of the converted message text. Used to control how many characters
   *        of msg text we want to store.
   * @param aCompressQuotes Replace quotes and citations with " ... " in the preview text
   */
  /* ACString getMsgTextFromStream (in nsIMsgDBHdr aMsgHdr, in nsIInputStream aStream, in long aBytesToRead, in long aMaxOutputLen, in boolean aCompressQuotes); */
  NS_IMETHOD GetMsgTextFromStream(nsIMsgDBHdr *aMsgHdr, nsIInputStream *aStream, PRInt32 aBytesToRead, PRInt32 aMaxOutputLen, PRBool aCompressQuotes, nsACString & _retval) = 0;

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

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGFOLDER \
  NS_IMETHOD GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval); \
  NS_IMETHOD StartFolderLoading(void); \
  NS_IMETHOD EndFolderLoading(void); \
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow); \
  NS_IMETHOD GetPrettiestName(PRUnichar * *aPrettiestName); \
  NS_IMETHOD GetFolderURL(char * *aFolderURL); \
  NS_IMETHOD GetShowDeletedMessages(PRBool *aShowDeletedMessages); \
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer); \
  NS_IMETHOD GetIsServer(PRBool *aIsServer); \
  NS_IMETHOD GetCanSubscribe(PRBool *aCanSubscribe); \
  NS_IMETHOD GetCanFileMessages(PRBool *aCanFileMessages); \
  NS_IMETHOD GetNoSelect(PRBool *aNoSelect); \
  NS_IMETHOD GetImapShared(PRBool *aImapShared); \
  NS_IMETHOD GetCanDeleteMessages(PRBool *aCanDeleteMessages); \
  NS_IMETHOD GetCanCreateSubfolders(PRBool *aCanCreateSubfolders); \
  NS_IMETHOD GetCanRename(PRBool *aCanRename); \
  NS_IMETHOD GetCanCompact(PRBool *aCanCompact); \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder); \
  NS_IMETHOD GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList **_retval); \
  NS_IMETHOD SetFilterList(nsIMsgFilterList *filterList); \
  NS_IMETHOD ForceDBClosed(void); \
  NS_IMETHOD Delete(void); \
  NS_IMETHOD DeleteSubFolders(nsISupportsArray *folders, nsIMsgWindow *msgWindow); \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage, nsIMsgWindow *msgWindow); \
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage, nsIMsgWindow *msgWindow); \
  NS_IMETHOD CreateSubfolder(const PRUnichar *folderName, nsIMsgWindow *msgWindow); \
  NS_IMETHOD AddSubfolder(const nsAString & folderName, nsIMsgFolder **_retval); \
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener); \
  NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow); \
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsISupportsArray *aFolderArray, PRBool aCompactOfflineAlso, nsISupportsArray *aOfflineFolderArray); \
  NS_IMETHOD CompactAllOfflineStores(nsIMsgWindow *aMsgWindow, nsISupportsArray *aOfflineFolderArray); \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener); \
  NS_IMETHOD Rename(const PRUnichar *name, nsIMsgWindow *msgWindow); \
  NS_IMETHOD RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder); \
  NS_IMETHOD ContainsChildNamed(const PRUnichar *name, PRBool *_retval); \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval); \
  NS_IMETHOD GenerateUniqueSubfolderName(const PRUnichar *prefix, nsIMsgFolder *otherFolder, PRUnichar **_retval); \
  NS_IMETHOD UpdateSummaryTotals(PRBool force); \
  NS_IMETHOD SummaryChanged(void); \
  NS_IMETHOD GetNumUnread(PRBool deep, PRInt32 *_retval); \
  NS_IMETHOD GetTotalMessages(PRBool deep, PRInt32 *_retval); \
  NS_IMETHOD GetHasNewMessages(PRBool *aHasNewMessages); \
  NS_IMETHOD SetHasNewMessages(PRBool aHasNewMessages); \
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage); \
  NS_IMETHOD ClearNewMessages(void); \
  NS_IMETHOD GetExpungedBytes(PRUint32 *aExpungedBytes); \
  NS_IMETHOD GetDeletable(PRBool *aDeletable); \
  NS_IMETHOD GetDisplayRecipients(PRBool *aDisplayRecipients); \
  NS_IMETHOD GetManyHeadersToDownload(PRBool *aManyHeadersToDownload); \
  NS_IMETHOD GetRequiresCleanup(PRBool *aRequiresCleanup); \
  NS_IMETHOD ClearRequiresCleanup(void); \
  NS_IMETHOD GetKnowsSearchNntpExtension(PRBool *aKnowsSearchNntpExtension); \
  NS_IMETHOD GetAllowsPosting(PRBool *aAllowsPosting); \
  NS_IMETHOD GetRelativePathName(char * *aRelativePathName); \
  NS_IMETHOD GetSizeOnDisk(PRUint32 *aSizeOnDisk); \
  NS_IMETHOD SetSizeOnDisk(PRUint32 aSizeOnDisk); \
  NS_IMETHOD GetUsername(char * *aUsername); \
  NS_IMETHOD GetHostname(char * *aHostname); \
  NS_IMETHOD SetFlag(PRUint32 flag); \
  NS_IMETHOD ClearFlag(PRUint32 flag); \
  NS_IMETHOD GetFlag(PRUint32 flag, PRBool *_retval); \
  NS_IMETHOD SetPrefFlag(void); \
  NS_IMETHOD ToggleFlag(PRUint32 flag); \
  NS_IMETHOD OnFlagChange(PRUint32 flag); \
  NS_IMETHOD GetFlags(PRUint32 *aFlags); \
  NS_IMETHOD SetFlags(PRUint32 aFlags); \
  NS_IMETHOD GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval); \
  NS_IMETHOD GetAllFoldersWithFlag(PRUint32 aFlag, nsISupportsArray **_retval); \
  NS_IMETHOD GetExpansionArray(nsISupportsArray *expansionArray); \
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, char **_retval); \
  NS_IMETHOD DeleteMessages(nsISupportsArray *messages, nsIMsgWindow *msgWindow, PRBool deleteStorage, PRBool isMove, nsIMsgCopyServiceListener *listener, PRBool allowUndo); \
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray *messages, PRBool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, PRBool isFolder, PRBool allowUndo); \
  NS_IMETHOD CopyFolder(nsIMsgFolder *srcFolder, PRBool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener); \
  NS_IMETHOD CopyFileMessage(nsIFileSpec *fileSpec, nsIMsgDBHdr *msgToReplace, PRBool isDraft, PRUint32 newMsgFlags, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener); \
  NS_IMETHOD AcquireSemaphore(nsISupports *semHolder); \
  NS_IMETHOD ReleaseSemaphore(nsISupports *semHolder); \
  NS_IMETHOD TestSemaphore(nsISupports *semHolder, PRBool *_retval); \
  NS_IMETHOD GetLocked(PRBool *aLocked); \
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow, nsIUrlListener *aListener); \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, PRBool deep); \
  NS_IMETHOD GetCharset(char * *aCharset); \
  NS_IMETHOD SetCharset(const char * aCharset); \
  NS_IMETHOD GetCharsetOverride(PRBool *aCharsetOverride); \
  NS_IMETHOD SetCharsetOverride(PRBool aCharsetOverride); \
  NS_IMETHOD GetBiffState(PRUint32 *aBiffState); \
  NS_IMETHOD SetBiffState(PRUint32 aBiffState); \
  NS_IMETHOD GetNumNewMessages(PRBool deep, PRInt32 *_retval); \
  NS_IMETHOD SetNumNewMessages(PRInt32 numNewMessages); \
  NS_IMETHOD GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription); \
  NS_IMETHOD GetGettingNewMessages(PRBool *aGettingNewMessages); \
  NS_IMETHOD SetGettingNewMessages(PRBool aGettingNewMessages); \
  NS_IMETHOD GetPath(nsIFileSpec * *aPath); \
  NS_IMETHOD SetPath(nsIFileSpec * aPath); \
  NS_IMETHOD GetFilePath(nsILocalFile * *aFilePath); \
  NS_IMETHOD SetFilePath(nsILocalFile * aFilePath); \
  NS_IMETHOD GetBaseMessageURI(char * *aBaseMessageURI); \
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, char **_retval); \
  NS_IMETHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag); \
  NS_IMETHOD MarkMessagesRead(nsISupportsArray *messages, PRBool markRead); \
  NS_IMETHOD MarkAllMessagesRead(void); \
  NS_IMETHOD MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged); \
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread); \
  NS_IMETHOD SetLabelForMessages(nsISupportsArray *messages, nsMsgLabelValue label); \
  NS_IMETHOD GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval); \
  NS_IMETHOD SetMsgDatabase(nsIMsgDatabase *msgDatabase); \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **_retval); \
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr **_retval); \
  NS_IMETHOD GetSupportsOffline(PRBool *aSupportsOffline); \
  NS_IMETHOD ShouldStoreMsgOffline(nsMsgKey msgKey, PRBool *_retval); \
  NS_IMETHOD HasMsgOffline(nsMsgKey msgKey, PRBool *_retval); \
  NS_IMETHOD GetOfflineFileStream(nsMsgKey msgKey, PRUint32 *offset, PRUint32 *size, nsIInputStream **_retval); \
  NS_IMETHOD GetOfflineStoreOutputStream(nsIOutputStream * *aOfflineStoreOutputStream); \
  NS_IMETHOD GetOfflineStoreInputStream(nsIInputStream * *aOfflineStoreInputStream); \
  NS_IMETHOD DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window); \
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, PRBool caseInsensitive, nsIMsgFolder **_retval); \
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window); \
  NS_IMETHOD EnableNotifications(PRInt32 notificationType, PRBool enable, PRBool dbBatching); \
  NS_IMETHOD IsCommandEnabled(const char *command, PRBool *_retval); \
  NS_IMETHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, PRBool caseInsensitive, PRBool *_retval); \
  NS_IMETHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, PRBool *_retval); \
  NS_IMETHOD AlertFilterChanged(nsIMsgWindow *msgWindow); \
  NS_IMETHOD ThrowAlertMsg(const char *msgName, nsIMsgWindow *msgWindow); \
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char *msgName, PRUnichar **_retval); \
  NS_IMETHOD NotifyCompactCompleted(void); \
  NS_IMETHOD CompareSortKeys(nsIMsgFolder *msgFolder, PRInt32 *_retval); \
  NS_IMETHOD GetSortKey(PRUint8 * *key, PRUint32 *length); \
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings); \
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings * aRetentionSettings); \
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings); \
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings * aDownloadSettings); \
  NS_IMETHOD CallFilterPlugins(nsIMsgWindow *aMsgWindow, PRBool *_retval); \
  NS_IMETHOD GetSortOrder(PRInt32 *aSortOrder); \
  NS_IMETHOD SetSortOrder(PRInt32 aSortOrder); \
  NS_IMETHOD GetPersistElided(PRBool *aPersistElided); \
  NS_IMETHOD GetParentMsgFolder(nsIMsgFolder * *aParentMsgFolder); \
  NS_IMETHOD GetDBTransferInfo(nsIDBFolderInfo * *aDBTransferInfo); \
  NS_IMETHOD SetDBTransferInfo(nsIDBFolderInfo * aDBTransferInfo); \
  NS_IMETHOD GetStringProperty(const char *propertyName, char **_retval); \
  NS_IMETHOD SetStringProperty(const char *propertyName, const char *propertyValue); \
  NS_IMETHOD GetLastMessageLoaded(nsMsgKey *aLastMessageLoaded); \
  NS_IMETHOD SetLastMessageLoaded(nsMsgKey aLastMessageLoaded); \
  NS_IMETHOD GetURI(char * *aURI); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD SetName(const PRUnichar * aName); \
  NS_IMETHOD GetPrettyName(PRUnichar * *aPrettyName); \
  NS_IMETHOD SetPrettyName(const PRUnichar * aPrettyName); \
  NS_IMETHOD GetAbbreviatedName(PRUnichar * *aAbbreviatedName); \
  NS_IMETHOD GetChildNamed(const PRUnichar *name, nsISupports **_retval); \
  NS_IMETHOD GetParent(nsIMsgFolder * *aParent); \
  NS_IMETHOD SetParent(nsIMsgFolder * aParent); \
  NS_IMETHOD GetSubFolders(nsIEnumerator **_retval); \
  NS_IMETHOD GetHasSubFolders(PRBool *aHasSubFolders); \
  NS_IMETHOD AddFolderListener(nsIFolderListener *listener); \
  NS_IMETHOD RemoveFolderListener(nsIFolderListener *listener); \
  NS_IMETHOD FindSubFolder(const nsACString & escapedSubFolderName, nsIMsgFolder **_retval); \
  NS_IMETHOD NotifyPropertyChanged(nsIAtom *property, const char *oldValue, const char *newValue); \
  NS_IMETHOD NotifyIntPropertyChanged(nsIAtom *property, PRInt32 oldValue, PRInt32 newValue); \
  NS_IMETHOD NotifyBoolPropertyChanged(nsIAtom *property, PRBool oldValue, PRBool newValue); \
  NS_IMETHOD NotifyPropertyFlagChanged(nsIMsgDBHdr *item, nsIAtom *property, PRUint32 oldValue, PRUint32 newValue); \
  NS_IMETHOD NotifyUnicharPropertyChanged(nsIAtom *property, const PRUnichar *oldValue, const PRUnichar *newValue); \
  NS_IMETHOD NotifyItemAdded(nsISupports *item); \
  NS_IMETHOD NotifyItemRemoved(nsISupports *item); \
  NS_IMETHOD NotifyFolderEvent(nsIAtom *event); \
  NS_IMETHOD ListDescendents(nsISupportsArray *descendents); \
  NS_IMETHOD Shutdown(PRBool shutdownChildren); \
  NS_IMETHOD GetInVFEditSearchScope(PRBool *aInVFEditSearchScope); \
  NS_IMETHOD SetInVFEditSearchScope(PRBool aSearchThisFolder, PRBool aSetOnSubFolders); \
  NS_IMETHOD CopyDataToOutputStreamForAppend(nsIInputStream *aIStream, PRInt32 aLength, nsIOutputStream *outputStream); \
  NS_IMETHOD CopyDataDone(void); \
  NS_IMETHOD SetJunkScoreForMessages(nsISupportsArray *aMessages, const char *aJunkScore); \
  NS_IMETHOD ApplyRetentionSettings(void); \
  NS_IMETHOD FetchMsgPreviewText(nsMsgKey *aKeysToFetch, PRUint32 aNumKeys, PRBool aLocalOnly, nsIUrlListener *aUrlListener, PRBool *aAsyncResults); \
  NS_IMETHOD AddKeywordsToMessages(nsISupportsArray *aMessages, const char *aKeywords); \
  NS_IMETHOD RemoveKeywordsFromMessages(nsISupportsArray *aMessages, const char *aKeywords); \
  NS_IMETHOD GetMsgTextFromStream(nsIMsgDBHdr *aMsgHdr, nsIInputStream *aStream, PRInt32 aBytesToRead, PRInt32 aMaxOutputLen, PRBool aCompressQuotes, nsACString & _retval); \
  NS_IMETHOD GetCustomIdentity(nsIMsgIdentity * *aCustomIdentity); 

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

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

#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 */
}

/* nsISimpleEnumerator getMessages (in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFolder::GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval)
{
    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 wstring prettiestName; */
NS_IMETHODIMP nsMsgFolder::GetPrettiestName(PRUnichar * *aPrettiestName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string folderURL; */
NS_IMETHODIMP nsMsgFolder::GetFolderURL(char * *aFolderURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean showDeletedMessages; */
NS_IMETHODIMP nsMsgFolder::GetShowDeletedMessages(PRBool *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(PRBool *aIsServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

/* void deleteSubFolders (in nsISupportsArray folders, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::DeleteSubFolders(nsISupportsArray *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, PRBool deleteStorage, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

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

/* void compactAllOfflineStores (in nsIMsgWindow aMsgWindow, in nsISupportsArray aOfflineFolderArray); */
NS_IMETHODIMP nsMsgFolder::CompactAllOfflineStores(nsIMsgWindow *aMsgWindow, nsISupportsArray *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 wstring name, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::Rename(const PRUnichar *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;
}

/* boolean containsChildNamed (in wstring name); */
NS_IMETHODIMP nsMsgFolder::ContainsChildNamed(const PRUnichar *name, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void updateSummaryTotals (in boolean force); */
NS_IMETHODIMP nsMsgFolder::UpdateSummaryTotals(PRBool 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(PRBool deep, PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute boolean hasNewMessages; */
NS_IMETHODIMP nsMsgFolder::GetHasNewMessages(PRBool *aHasNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetHasNewMessages(PRBool 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(PRBool *aDeletable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* readonly attribute boolean requiresCleanup; */
NS_IMETHODIMP nsMsgFolder::GetRequiresCleanup(PRBool *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(PRBool *aKnowsSearchNntpExtension)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* readonly attribute string relativePathName; */
NS_IMETHODIMP nsMsgFolder::GetRelativePathName(char * *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 string username; */
NS_IMETHODIMP nsMsgFolder::GetUsername(char * *aUsername)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string hostname; */
NS_IMETHODIMP nsMsgFolder::GetHostname(char * *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, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setPrefFlag (); */
NS_IMETHODIMP nsMsgFolder::SetPrefFlag()
{
    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 getFoldersWithFlag (in unsigned long flags, in unsigned long resultsize, out unsigned long numFolders); */
NS_IMETHODIMP nsMsgFolder::GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISupportsArray getAllFoldersWithFlag (in unsigned long aFlag); */
NS_IMETHODIMP nsMsgFolder::GetAllFoldersWithFlag(PRUint32 aFlag, nsISupportsArray **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* string getUriForMsg (in nsIMsgDBHdr msgHdr); */
NS_IMETHODIMP nsMsgFolder::GetUriForMsg(nsIMsgDBHdr *msgHdr, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void copyMessages (in nsIMsgFolder srcFolder, in nsISupportsArray messages, in boolean isMove, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener, in boolean isFolder, in boolean allowUndo); */
NS_IMETHODIMP nsMsgFolder::CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray *messages, PRBool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, PRBool isFolder, PRBool 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, PRBool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyFileMessage (in nsIFileSpec fileSpec, in nsIMsgDBHdr msgToReplace, in boolean isDraft, in unsigned long newMsgFlags, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
NS_IMETHODIMP nsMsgFolder::CopyFileMessage(nsIFileSpec *fileSpec, nsIMsgDBHdr *msgToReplace, PRBool isDraft, PRUint32 newMsgFlags, 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, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean locked; */
NS_IMETHODIMP nsMsgFolder::GetLocked(PRBool *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, PRBool deep)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string charset; */
NS_IMETHODIMP nsMsgFolder::GetCharset(char * *aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetCharset(const char * aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean charsetOverride; */
NS_IMETHODIMP nsMsgFolder::GetCharsetOverride(PRBool *aCharsetOverride)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetCharsetOverride(PRBool 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(PRBool deep, PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* readonly attribute wstring newMessagesNotificationDescription; */
NS_IMETHODIMP nsMsgFolder::GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute nsIFileSpec path; */
NS_IMETHODIMP nsMsgFolder::GetPath(nsIFileSpec * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetPath(nsIFileSpec * aPath)
{
    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 string baseMessageURI; */
NS_IMETHODIMP nsMsgFolder::GetBaseMessageURI(char * *aBaseMessageURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string generateMessageURI (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::GenerateMessageURI(nsMsgKey msgKey, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

/* void markMessagesFlagged (in nsISupportsArray messages, in boolean markFlagged); */
NS_IMETHODIMP nsMsgFolder::MarkMessagesFlagged(nsISupportsArray *messages, PRBool 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 nsISupportsArray messages, in nsMsgLabelValue label); */
NS_IMETHODIMP nsMsgFolder::SetLabelForMessages(nsISupportsArray *messages, nsMsgLabelValue label)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDatabase getMsgDatabase (in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setMsgDatabase (in nsIMsgDatabase msgDatabase); */
NS_IMETHODIMP nsMsgFolder::SetMsgDatabase(nsIMsgDatabase *msgDatabase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

/* nsIInputStream getOfflineFileStream (in nsMsgKey msgKey, out PRUint32 offset, out PRUint32 size); */
NS_IMETHODIMP nsMsgFolder::GetOfflineFileStream(nsMsgKey msgKey, PRUint32 *offset, PRUint32 *size, nsIInputStream **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIOutputStream offlineStoreOutputStream; */
NS_IMETHODIMP nsMsgFolder::GetOfflineStoreOutputStream(nsIOutputStream * *aOfflineStoreOutputStream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIInputStream offlineStoreInputStream; */
NS_IMETHODIMP nsMsgFolder::GetOfflineStoreInputStream(nsIInputStream * *aOfflineStoreInputStream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* nsIMsgFolder getChildWithURI (in string uri, in boolean deep, in boolean caseInsensitive); */
NS_IMETHODIMP nsMsgFolder::GetChildWithURI(const char *uri, PRBool deep, PRBool caseInsensitive, nsIMsgFolder **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* boolean isCommandEnabled (in string command); */
NS_IMETHODIMP nsMsgFolder::IsCommandEnabled(const char *command, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

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

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

/* [noscript] void getSortKey (out octet_ptr key, out unsigned long length); */
NS_IMETHODIMP nsMsgFolder::GetSortKey(PRUint8 * *key, PRUint32 *length)
{
    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, PRBool *_retval)
{
    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;
}

/* [noscript] readonly attribute boolean persistElided; */
NS_IMETHODIMP nsMsgFolder::GetPersistElided(PRBool *aPersistElided)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgFolder parentMsgFolder; */
NS_IMETHODIMP nsMsgFolder::GetParentMsgFolder(nsIMsgFolder * *aParentMsgFolder)
{
    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;
}

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

/* void setStringProperty (in string propertyName, in string propertyValue); */
NS_IMETHODIMP nsMsgFolder::SetStringProperty(const char *propertyName, const char *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 string URI; */
NS_IMETHODIMP nsMsgFolder::GetURI(char * *aURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring name; */
NS_IMETHODIMP nsMsgFolder::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetName(const PRUnichar * aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring prettyName; */
NS_IMETHODIMP nsMsgFolder::GetPrettyName(PRUnichar * *aPrettyName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetPrettyName(const PRUnichar * aPrettyName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring abbreviatedName; */
NS_IMETHODIMP nsMsgFolder::GetAbbreviatedName(PRUnichar * *aAbbreviatedName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISupports getChildNamed (in wstring name); */
NS_IMETHODIMP nsMsgFolder::GetChildNamed(const PRUnichar *name, nsISupports **_retval)
{
    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;
}

/* nsIEnumerator GetSubFolders (); */
NS_IMETHODIMP nsMsgFolder::GetSubFolders(nsIEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean hasSubFolders; */
NS_IMETHODIMP nsMsgFolder::GetHasSubFolders(PRBool *aHasSubFolders)
{
    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;
}

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

/* void NotifyPropertyChanged (in nsIAtom property, in string oldValue, in string newValue); */
NS_IMETHODIMP nsMsgFolder::NotifyPropertyChanged(nsIAtom *property, const char *oldValue, const char *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, PRBool oldValue, PRBool 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 wstring oldValue, in wstring newValue); */
NS_IMETHODIMP nsMsgFolder::NotifyUnicharPropertyChanged(nsIAtom *property, const PRUnichar *oldValue, const PRUnichar *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(PRBool shutdownChildren)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void setInVFEditSearchScope (in boolean aSearchThisFolder, in boolean aSetOnSubFolders); */
NS_IMETHODIMP nsMsgFolder::SetInVFEditSearchScope(PRBool aSearchThisFolder, PRBool 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 nsISupportsArray aMessages, in string aJunkScore); */
NS_IMETHODIMP nsMsgFolder::SetJunkScoreForMessages(nsISupportsArray *aMessages, const char *aJunkScore)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void fetchMsgPreviewText ([array, size_is (aNumKeys)] in nsMsgKey aKeysToFetch, in unsigned long aNumKeys, in boolean aLocalOnly, in nsIUrlListener aUrlListener, out boolean aAsyncResults); */
NS_IMETHODIMP nsMsgFolder::FetchMsgPreviewText(nsMsgKey *aKeysToFetch, PRUint32 aNumKeys, PRBool aLocalOnly, nsIUrlListener *aUrlListener, PRBool *aAsyncResults)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addKeywordsToMessages (in nsISupportsArray aMessages, in string aKeywords); */
NS_IMETHODIMP nsMsgFolder::AddKeywordsToMessages(nsISupportsArray *aMessages, const char *aKeywords)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeKeywordsFromMessages (in nsISupportsArray aMessages, in string aKeywords); */
NS_IMETHODIMP nsMsgFolder::RemoveKeywordsFromMessages(nsISupportsArray *aMessages, const char *aKeywords)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getMsgTextFromStream (in nsIMsgDBHdr aMsgHdr, in nsIInputStream aStream, in long aBytesToRead, in long aMaxOutputLen, in boolean aCompressQuotes); */
NS_IMETHODIMP nsMsgFolder::GetMsgTextFromStream(nsIMsgDBHdr *aMsgHdr, nsIInputStream *aStream, PRInt32 aBytesToRead, PRInt32 aMaxOutputLen, PRBool aCompressQuotes, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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


#endif /* __gen_nsIMsgFolder_h__ */
