public NSObject openDocumentWithContentsOfURL_display_error(NSURL absoluteURL, bool displayDocument, IntPtr outError) { NSObject result = null; string path = absoluteURL.path().ToString(); if (System.IO.Directory.Exists(path)) { try { Boss boss = ObjectModel.Create("DirectoryEditorPlugin"); var open = boss.Get<IOpen>(); result = open.Open(path).To<NSObject>(); } catch (Exception e) { NSMutableDictionary userInfo = NSMutableDictionary.Create(); userInfo.setObject_forKey(NSString.Create("Couldn't open '{0}", path), Externs.NSLocalizedDescriptionKey); userInfo.setObject_forKey(NSString.Create(e.Message), Externs.NSLocalizedFailureReasonErrorKey); NSObject error = NSError.errorWithDomain_code_userInfo(Externs.Cocoa3Domain, 2, userInfo); Marshal.WriteIntPtr(outError, error); } } else { result = SuperCall(NSDocumentController.Class, "openDocumentWithContentsOfURL:display:error:", absoluteURL, displayDocument, outError).To<NSDocument>(); } return result; }