     
     /// customize document's file attributes
     override func fileAttributesToWrite(to url: URL, ofType typeName: String, for saveOperation: NSSaveOperationType, originalContentsURL absoluteOriginalContentsURL: URL?) throws -> [String : Any] {
+        
+        // [caution] This method may be called from a background thread due to async-saving.
         
         var attributes = try super.fileAttributesToWrite(to: url, ofType: typeName, for: saveOperation, originalContentsURL: absoluteOriginalContentsURL)
         

    /// initialize instance with existing file
    convenience init(fileURL url: URL, ofType typeName: String) throws {
        
        // Workaround initializer in order to invoke self's (actually super's) `init(contentsOf:ofType:)` inside.
        
        try self.init(contentsOf: url, ofType: typeName)
        
        // [caution] This method may be called from a background thread due to concurrent-opening.
        // This method won't be invoked on Resume. (2015-01-26)
        
        // set sender of external editor protocol (ODB Editor Suite)
        self.odbEventSender = ODBEventSender()

    
    override init() {
        
        // [caution] This method may be called from a background thread due to concurrent-opening.
        
        let uuid = UUID().uuidString
        self.autosaveIdentifier = uuid.substring(to: uuid.index(uuid.startIndex, offsetBy: UniqueFileIDLength))
        
