Revision: 29865
          http://sourceforge.net/p/bibdesk/svn/29865
Author:   hofman
Date:     2025-11-21 16:52:53 +0000 (Fri, 21 Nov 2025)
Log Message:
-----------
add some lightweight generics to contrroller classes

Modified Paths:
--------------
    trunk/bibdesk/BDSKBookmarkController.h
    trunk/bibdesk/BDSKCharacterConversion.h
    trunk/bibdesk/BDSKCompletionManager.h
    trunk/bibdesk/BDSKCompletionManager.m
    trunk/bibdesk/BDSKConditionController.h
    trunk/bibdesk/BDSKConverter.h
    trunk/bibdesk/BDSKCustomCiteDrawerController.h
    trunk/bibdesk/BDSKDBLPGroupServer.h
    trunk/bibdesk/BDSKDocumentController.h
    trunk/bibdesk/BDSKDocumentInfoWindowController.h
    trunk/bibdesk/BDSKDocumentSearch.h
    trunk/bibdesk/BDSKEditor.h
    trunk/bibdesk/BDSKErrorEditor.h
    trunk/bibdesk/BDSKErrorManager.h
    trunk/bibdesk/BDSKErrorObjectController.h
    trunk/bibdesk/BDSKFieldSheetController.h
    trunk/bibdesk/BDSKFileContentSearchController.h
    trunk/bibdesk/BDSKFileMatchConfigController.h
    trunk/bibdesk/BDSKFileMatcher.h
    trunk/bibdesk/BDSKFileMigrationController.h
    trunk/bibdesk/BDSKFileSearch.h
    trunk/bibdesk/BDSKFileSearchIndex.h
    trunk/bibdesk/BDSKFiler.h
    trunk/bibdesk/BDSKFilerErrorController.h
    trunk/bibdesk/BDSKFilterController.h
    trunk/bibdesk/BDSKFindController.h
    trunk/bibdesk/BDSKFormatParser.h
    trunk/bibdesk/BDSKItemPasteboardHelper.h
    trunk/bibdesk/BDSKItemSearchIndexes.h
    trunk/bibdesk/BDSKMacroResolver.h
    trunk/bibdesk/BDSKMacroWindowController.h
    trunk/bibdesk/BDSKMergeController.h
    trunk/bibdesk/BDSKMetadataCacheOperation.h
    trunk/bibdesk/BDSKNotesSearchIndex.h
    trunk/bibdesk/BDSKNotesWindowController.h
    trunk/bibdesk/BDSKOrphanedFilesFinder.h
    trunk/bibdesk/BDSKPersonController.h
    trunk/bibdesk/BDSKPreferenceController.h
    trunk/bibdesk/BDSKPreferencePane.h
    trunk/bibdesk/BDSKSearchBookmarkController.h
    trunk/bibdesk/BDSKSearchGroupServerManager.h
    trunk/bibdesk/BDSKSearchGroupSheetController.h
    trunk/bibdesk/BDSKSharingBrowser.h
    trunk/bibdesk/BDSKStringEncodingManager.h
    trunk/bibdesk/BDSKTeXTask.h
    trunk/bibdesk/BDSKTemplateDocument.h
    trunk/bibdesk/BDSKTemplateParser.h
    trunk/bibdesk/BDSKTextImportController.h
    trunk/bibdesk/BDSKTouchBarButtonGroup.h
    trunk/bibdesk/BDSKTypeInfoEditor.h
    trunk/bibdesk/BDSKTypeSelectHelper.h
    trunk/bibdesk/BDSKURLGroupSheetController.h
    trunk/bibdesk/BDSKWebIconDatabase.h

Modified: trunk/bibdesk/BDSKBookmarkController.h
===================================================================
--- trunk/bibdesk/BDSKBookmarkController.h      2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKBookmarkController.h      2025-11-21 16:52:53 UTC (rev 
29865)
@@ -55,8 +55,8 @@
     NSButton *deleteTouchBarButton;
     BDSKBookmark *bookmarkRoot;
     NSUndoManager *undoManager;
-    NSArray *draggedBookmarks;
-    NSMutableDictionary *toolbarItems;
+    NSArray<BDSKBookmark *> *draggedBookmarks;
+    NSMutableDictionary<NSString *, NSToolbarItem *> *toolbarItems;
     BOOL needsBeginUpdates;
 }
 

Modified: trunk/bibdesk/BDSKCharacterConversion.h
===================================================================
--- trunk/bibdesk/BDSKCharacterConversion.h     2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKCharacterConversion.h     2025-11-21 16:52:53 UTC (rev 
29865)
@@ -51,15 +51,15 @@
     NSSegmentedControl *addRemoveButton;
     NSButton *okButton;
     NSButton *cancelButton;
-    NSSet *defaultOneWayRomanSet;
-    NSSet *defaultRomanSet;
-    NSSet *defaultTexSet;
-       NSMutableDictionary *oneWayDict;
-       NSMutableDictionary *twoWayDict;
-       NSMutableDictionary *currentDict;
-       NSMutableArray *currentArray;
-       NSMutableSet *romanSet;
-       NSMutableSet *texSet;
+    NSSet<NSString *> *defaultOneWayRomanSet;
+    NSSet<NSString *> *defaultRomanSet;
+    NSSet<NSString *> *defaultTexSet;
+       NSMutableDictionary<NSString *, NSString *> *oneWayDict;
+       NSMutableDictionary<NSString *, NSString *> *twoWayDict;
+       NSMutableDictionary<NSString *, NSString *> *currentDict;
+       NSMutableArray<NSString *> *currentArray;
+       NSMutableSet<NSString *> *romanSet;
+       NSMutableSet<NSString *> *texSet;
     NSFormatter *texFormatter;
     NSFormatter *romanFormatter;
        BOOL validRoman;
@@ -83,8 +83,8 @@
 - (IBAction)changeTex:(nullable id)sender;
 
 @property (nonatomic) BDSKListType listType;
-@property (nonatomic, copy) NSDictionary *oneWayDict;
-@property (nonatomic, copy) NSDictionary *twoWayDict;
+@property (nonatomic, copy) NSDictionary<NSString *, NSString *> *oneWayDict;
+@property (nonatomic, copy) NSDictionary<NSString *, NSString *> *twoWayDict;
 
 - (void)updateButtons;
 - (BOOL)commitEditing;

Modified: trunk/bibdesk/BDSKCompletionManager.h
===================================================================
--- trunk/bibdesk/BDSKCompletionManager.h       2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKCompletionManager.h       2025-11-21 16:52:53 UTC (rev 
29865)
@@ -40,25 +40,27 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+@class BibItem, BibAuthor;
+
 @interface BDSKCompletionManager : NSObject {
-    NSMutableDictionary *autoCompletionDict;
-    NSMutableDictionary *lastNamesDict;
+    NSMutableDictionary<NSString *, NSMutableSet<NSString *> *> 
*autoCompletionDict;
+    NSMutableDictionary<NSString *, NSString *> *lastNamesDict;
 }
 
-@property (class, nonatomic, readonly) id sharedManager;
+@property (class, nonatomic, readonly) BDSKCompletionManager *sharedManager;
 
 - (void)addString:(NSString *)string forCompletionEntry:(NSString *)entry;
 - (void)removeString:(NSString *)string forCompletionEntry:(NSString *)entry;
-- (void)addNamesForCompletion:(NSArray *)authors;
-- (void)removeNamesForCompletion:(NSArray *)authors;
-- (void)addCompletionsFromItems:(NSArray *)items;
-- (void)removeCompletionsFromItems:(NSArray *)items;
+- (void)addNamesForCompletion:(NSArray<BibAuthor *> *)authors;
+- (void)removeNamesForCompletion:(NSArray<BibAuthor *> *)authors;
+- (void)addCompletionsFromItems:(NSArray<BibItem *> *)items;
+- (void)removeCompletionsFromItems:(NSArray<BibItem *> *)items;
 
 - (NSRange)entry:(NSString *)entry rangeForUserCompletion:(NSRange)charRange 
ofString:(NSString *)fullString;
-- (NSArray *)entry:(NSString *)entry completions:(NSArray *)words 
forPartialWordRange:(NSRange)charRange ofString:(NSString *)fullString 
indexOfSelectedItem:(NSInteger *)index;
+- (NSArray<NSString *> *)entry:(NSString *)entry completions:(NSArray<NSString 
*> *)words forPartialWordRange:(NSRange)charRange ofString:(NSString 
*)fullString indexOfSelectedItem:(NSInteger *)index;
 
 - (NSRange)rangeForUserCompletion:(NSRange)charRange forBibTeXString:(NSString 
*)fullString;
-- (NSArray *)possibleMatches:(NSMapTable *)definitions 
forBibTeXString:(NSString *)fullString partialWordRange:(NSRange)charRange 
indexOfBestMatch:(NSInteger *)index;
+- (NSArray<NSString *> *)possibleMatches:(NSMapTable<NSString *, NSString *> 
*)definitions forBibTeXString:(NSString *)fullString 
partialWordRange:(NSRange)charRange indexOfBestMatch:(NSInteger *)index;
 - (NSString *)possibleMatch:(NSString *)match;
 
 @end

Modified: trunk/bibdesk/BDSKCompletionManager.m
===================================================================
--- trunk/bibdesk/BDSKCompletionManager.m       2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKCompletionManager.m       2025-11-21 16:52:53 UTC (rev 
29865)
@@ -61,7 +61,7 @@
         completedFields = [completedFields 
setByAddingObjectsFromArray:extraFields];
 }
 
-+ (id)sharedManager {
++ (BDSKCompletionManager *)sharedManager {
     if (sharedManager == nil)
         sharedManager = [[self alloc] init];
     return sharedManager;

Modified: trunk/bibdesk/BDSKConditionController.h
===================================================================
--- trunk/bibdesk/BDSKConditionController.h     2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKConditionController.h     2025-11-21 16:52:53 UTC (rev 
29865)
@@ -68,9 +68,9 @@
     NSLayoutConstraint *comparisonWidthConstraint;
     NSLayoutConstraint *valueWidthConstraint;
     NSLayoutConstraint *stringvalueWidthConstraint;
-    NSArray *retainedViews;
+    NSArray<NSView *> *retainedViews;
        __weak BDSKFilterController *filterController;
-       NSArray *keys;
+       NSArray<NSString *> *keys;
     BOOL isObserving;
 }
 
@@ -111,7 +111,7 @@
 
 @property (nonatomic, nullable, readonly) BDSKCondition *condition;
 
-@property (nonatomic, readonly) NSArray *keys;
+@property (nonatomic, readonly) NSArray<NSString *> *keys;
 
 @end
 

Modified: trunk/bibdesk/BDSKConverter.h
===================================================================
--- trunk/bibdesk/BDSKConverter.h       2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKConverter.h       2025-11-21 16:52:53 UTC (rev 29865)
@@ -59,10 +59,10 @@
 @interface BDSKConverter : NSObject {
      NSCharacterSet *finalCharSet;
      NSCharacterSet *accentCharSet;
-     NSDictionary *detexifyConversions;
-     NSDictionary *texifyConversions;
-     NSDictionary *texifyAccents;
-     NSDictionary *detexifyAccents;
+     NSDictionary<NSString *, NSString *> *detexifyConversions;
+     NSDictionary<NSString *, NSString *> *texifyConversions;
+     NSDictionary<NSString *, NSString *> *texifyAccents;
+     NSDictionary<NSString *, NSString *> *detexifyAccents;
      NSCharacterSet *baseCharacterSetForTeX;
 }
 /*!

Modified: trunk/bibdesk/BDSKCustomCiteDrawerController.h
===================================================================
--- trunk/bibdesk/BDSKCustomCiteDrawerController.h      2025-11-21 10:14:27 UTC 
(rev 29864)
+++ trunk/bibdesk/BDSKCustomCiteDrawerController.h      2025-11-21 16:52:53 UTC 
(rev 29865)
@@ -44,7 +44,7 @@
 @interface BDSKCustomCiteDrawerController : NSViewController 
<NSTableViewDelegate, NSTableViewDataSource, NSMenuDelegate> {
     NSTableView *tableView;
     __weak BibDocument *document;
-    NSMutableArray *customStringArray;
+    NSMutableArray<NSString *> *customStringArray;
 }
 
 - (instancetype)initForDocument:(BibDocument *)aDocument 
NS_DESIGNATED_INITIALIZER;

Modified: trunk/bibdesk/BDSKDBLPGroupServer.h
===================================================================
--- trunk/bibdesk/BDSKDBLPGroupServer.h 2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKDBLPGroupServer.h 2025-11-21 16:52:53 UTC (rev 29865)
@@ -59,8 +59,8 @@
     NSString *errorMessage;
     NSMutableArray<BDSKDownload *> *downloads;
     NSMutableArray<NSString *> *authors;
-    NSMutableArray<BDSKDownload *> *bibtexFetches;
-    NSMutableArray<BDSKDownload *> *xmlFetches;
+    NSMutableArray *bibtexFetches;
+    NSMutableArray *xmlFetches;
 }
 
 @end

Modified: trunk/bibdesk/BDSKDocumentController.h
===================================================================
--- trunk/bibdesk/BDSKDocumentController.h      2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKDocumentController.h      2025-11-21 16:52:53 UTC (rev 
29865)
@@ -48,7 +48,7 @@
     
     id mainDocument;
     
-    NSMutableDictionary *customOpenSettings;
+    NSMutableDictionary<id, NSDictionary<NSString *, id> *> 
*customOpenSettings;
     
     NSInteger openType;
 }

Modified: trunk/bibdesk/BDSKDocumentInfoWindowController.h
===================================================================
--- trunk/bibdesk/BDSKDocumentInfoWindowController.h    2025-11-21 10:14:27 UTC 
(rev 29864)
+++ trunk/bibdesk/BDSKDocumentInfoWindowController.h    2025-11-21 16:52:53 UTC 
(rev 29865)
@@ -45,8 +45,8 @@
     NSSegmentedControl *addRemoveButton;
     NSButton *okButton;
     NSButton *cancelButton;
-    NSMapTable *info;
-    NSMutableArray *keys;
+    NSMapTable<NSString *, NSString *> *info;
+    NSMutableArray<NSString *> *keys;
 }
 
 @property (nonatomic, nullable, strong) IBOutlet NSTableView *tableView;
@@ -59,7 +59,7 @@
 - (IBAction)changeKey:(nullable id)sender;
 - (IBAction)changeValue:(nullable id)sender;
 
-@property (nonatomic, copy) NSMapTable *info;
+@property (nonatomic, copy) NSMapTable<NSString *, NSString *> *info;
 
 @end
 

Modified: trunk/bibdesk/BDSKDocumentSearch.h
===================================================================
--- trunk/bibdesk/BDSKDocumentSearch.h  2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKDocumentSearch.h  2025-11-21 16:52:53 UTC (rev 29865)
@@ -43,6 +43,8 @@
 
 @protocol BDSKDocumentSearchDelegate;
 
+@class BibItem;
+
 @interface BDSKDocumentSearch : NSObject {
     @private;
     SKSearchRef search;
@@ -53,15 +55,15 @@
     dispatch_queue_t queue;
     
     // main thread access only
-    NSArray *previouslySelectedPublications;
+    NSArray<BibItem *> *previouslySelectedPublications;
     NSPoint previousScrollPositionAsPercentage;
 }
 
 // following are all thread safe, aDelegate must implement all delegate methods
 - (instancetype)initWithDelegate:(nullable 
id<BDSKDocumentSearchDelegate>)aDelegate NS_DESIGNATED_INITIALIZER;
-- (void)searchForString:(NSString *)searchString index:(SKIndexRef)index 
selectedPublications:(nullable NSArray *)selPubs 
scrollPositionAsPercentage:(NSPoint)scrollPoint;
+- (void)searchForString:(NSString *)searchString index:(SKIndexRef)index 
selectedPublications:(nullable NSArray<BibItem *> *)selPubs 
scrollPositionAsPercentage:(NSPoint)scrollPoint;
 
-@property (nonatomic, nullable, readonly) NSArray 
*previouslySelectedPublications;
+@property (nonatomic, nullable, readonly) NSArray<BibItem *> 
*previouslySelectedPublications;
 @property (nonatomic, readonly) NSPoint previousScrollPositionAsPercentage;
 
 // call when closing the document window; kills the search and prevents 
further callbacks
@@ -73,7 +75,7 @@
 @protocol BDSKDocumentSearchDelegate
 - (void)searchDidStart:(BDSKDocumentSearch *)aSearch;
 - (void)searchDidStop:(BDSKDocumentSearch *)aSearch;
-- (void)search:(BDSKDocumentSearch *)aSearch foundIdentifiers:(NSSet 
*)identifierURLs normalizedScores:(NSDictionary *)scores;
+- (void)search:(BDSKDocumentSearch *)aSearch foundIdentifiers:(NSSet<NSURL *> 
*)identifierURLs normalizedScores:(NSDictionary<NSString *, NSNumber *> 
*)scores;
 @end
 
 NS_ASSUME_NONNULL_END

Modified: trunk/bibdesk/BDSKEditor.h
===================================================================
--- trunk/bibdesk/BDSKEditor.h  2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKEditor.h  2025-11-21 16:52:53 UTC (rev 29865)
@@ -82,9 +82,9 @@
     // 
----------------------------------------------------------------------------------------
     BibItem *publication;
     
-    NSMutableArray *fields;
+    NSMutableArray<NSString *> *fields;
     
-    NSMutableSet *addedFields;
+    NSMutableSet<NSString *> *addedFields;
     
 // 
----------------------------------------------------------------------------------------
 // status bar stuff
@@ -211,7 +211,7 @@
 
 - (IBAction)tableButtonAction:(nullable id)sender;
 
-- (void)previewURLs:(nullable NSArray *)theURLs;
+- (void)previewURLs:(nullable NSArray<NSURL *> *)theURLs;
 - (void)stopPreviewing;
 
 - (void)customFieldsDidChange:(NSNotification *)notification;
@@ -222,7 +222,7 @@
 
 @property (nonatomic, readonly) NSInteger numberOfPersons;
 - (BibAuthor *)personAtIndex:(NSUInteger)anIndex;
-@property (nonatomic, readonly) NSArray *persons;
+@property (nonatomic, readonly) NSArray<BibAuthor *> *persons;
 
 - (IBAction)toggleSideBar:(nullable id)sender;
 - (IBAction)toggleStatusBar:(nullable id)sender;

Modified: trunk/bibdesk/BDSKErrorEditor.h
===================================================================
--- trunk/bibdesk/BDSKErrorEditor.h     2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKErrorEditor.h     2025-11-21 16:52:53 UTC (rev 29865)
@@ -40,7 +40,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@class BDSKErrorManager, BibDocument;
+@class BDSKErrorManager, BibDocument, BDSKErrorObject;
 
 @interface BDSKErrorEditor : NSWindowController <NSTextStorageDelegate, 
NSTouchBarDelegate> {
     NSTextView *textView;
@@ -49,7 +49,7 @@
     NSButton *reloadButton;
     NSTextField *lineNumberField;
     __weak BDSKErrorManager *manager;
-    NSArray *errors;
+    NSArray<BDSKErrorObject *> *errors;
     NSURL *fileURL;
     NSString *displayName;
     NSData *data;
@@ -78,7 +78,7 @@
 
 @property (nonatomic, nullable, weak) BDSKErrorManager *manager;
 
-@property (nonatomic, nullable, copy) NSArray *errors;
+@property (nonatomic, nullable, copy) NSArray<BDSKErrorObject *> *errors;
 
 @property (nonatomic, nullable, strong) NSURL *fileURL;
 @property (nonatomic, readonly) NSString *displayName;

Modified: trunk/bibdesk/BDSKErrorManager.h
===================================================================
--- trunk/bibdesk/BDSKErrorManager.h    2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKErrorManager.h    2025-11-21 16:52:53 UTC (rev 29865)
@@ -45,7 +45,7 @@
 @interface BDSKErrorManager : NSObject {
     __weak BDSKErrorObjectController *errorController;
     BibDocument *document;
-    NSMutableArray *editors;
+    NSMutableArray<BDSKErrorEditor *> *editors;
     BDSKErrorEditor *mainEditor;
     NSString *documentDisplayName;
     NSStringEncoding documentStringEncoding;
@@ -63,7 +63,7 @@
 
 @property (nonatomic, nullable, readonly) BDSKErrorEditor *mainEditor;
 
-@property (nonatomic, readonly) NSArray *editors;
+@property (nonatomic, readonly) NSArray<BDSKErrorEditor *> *editors;
 
 - (void)addEditor:(BDSKErrorEditor *)editor;
 - (void)removeEditor:(BDSKErrorEditor *)editor;

Modified: trunk/bibdesk/BDSKErrorObjectController.h
===================================================================
--- trunk/bibdesk/BDSKErrorObjectController.h   2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKErrorObjectController.h   2025-11-21 16:52:53 UTC (rev 
29865)
@@ -43,9 +43,9 @@
 @class BibDocument, BibItem, BDSKErrorObject, BDSKErrorManager, 
BDSKErrorEditor, BDSKTableView;
 
 @interface BDSKErrorObjectController : NSWindowController 
<NSTableViewDelegate, NSTableViewDataSource> {
-    NSMutableArray *errors;
-    NSMutableArray *managers;
-    NSMutableArray *currentErrors;
+    NSMutableArray<BDSKErrorObject *> *errors;
+    NSMutableArray<BDSKErrorManager *> *managers;
+    NSMutableArray<BDSKErrorObject *> *currentErrors;
     
     NSUInteger lastIndex;
     
@@ -65,13 +65,13 @@
 @property (nonatomic, nullable, strong) IBOutlet NSArrayController 
*errorsController;
 
 
-- (NSArray *)errors;
+- (NSArray<BDSKErrorObject *> *)errors;
 - (NSUInteger)countOfErrors;
 - (BDSKErrorObject *)objectInErrorsAtIndex:(NSUInteger)index;
 - (void)insertObject:(BDSKErrorObject *)obj inErrorsAtIndex:(NSUInteger)index;
 - (void)removeObjectFromErrorsAtIndex:(NSUInteger)index;
 
-- (NSArray *)managers;
+- (NSArray<BDSKErrorManager *> *)managers;
 - (NSUInteger)countOfManagers;
 - (BDSKErrorManager *)objectInManagersAtIndex:(NSUInteger)theIndex;
 - (void)insertObject:(BDSKErrorManager *)obj 
inManagersAtIndex:(NSUInteger)theIndex;
@@ -90,7 +90,7 @@
 - (void)documentFailedLoad:(BibDocument *)document shouldEdit:(BOOL)shouldEdit;
 - (void)handleRemoveDocumentNotification:(NSNotification *)notification;
 - (void)handleRemovePublicationNotification:(NSNotification *)notification;
-- (void)removeErrorsForPublications:(NSArray *)pubs;
+- (void)removeErrorsForPublications:(NSArray<BibItem *> *)pubs;
 - (void)removeErrorsForEditor:(BDSKErrorEditor *)editor;
 
 // tableView actions

Modified: trunk/bibdesk/BDSKFieldSheetController.h
===================================================================
--- trunk/bibdesk/BDSKFieldSheetController.h    2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKFieldSheetController.h    2025-11-21 16:52:53 UTC (rev 
29865)
@@ -51,10 +51,10 @@
     NSButton *cancelButton;
     NSString *selectedField;
     NSString *selectedFieldLabel;
-    NSArray *selectableFields;
+    NSArray<NSString *> *selectableFields;
     NSString *chosenField;
     NSString *chosenFieldLabel;
-    NSArray *choosableFields;
+    NSArray<NSString *> *choosableFields;
     NSString *defaultButtonTitle;
     NSString *cancelButtonTitle;
 }
@@ -73,11 +73,11 @@
 
 @property (nonatomic, nullable, strong) NSString *selectedField;
 @property (nonatomic, nullable, strong) NSString *selectedFieldLabel;
-@property (nonatomic, nullable, copy) NSArray *selectableFields;
+@property (nonatomic, nullable, copy) NSArray<NSString *> *selectableFields;
 
 @property (nonatomic, nullable, strong) NSString *chosenField;
 @property (nonatomic, nullable, strong) NSString *chosenFieldLabel;
-@property (nonatomic, nullable, copy) NSArray *choosableFields;
+@property (nonatomic, nullable, copy) NSArray<NSString *> *choosableFields;
 
 @property (nonatomic, strong) NSString *defaultButtonTitle;
 @property (nonatomic, strong) NSString *cancelButtonTitle;

Modified: trunk/bibdesk/BDSKFileContentSearchController.h
===================================================================
--- trunk/bibdesk/BDSKFileContentSearchController.h     2025-11-21 10:14:27 UTC 
(rev 29864)
+++ trunk/bibdesk/BDSKFileContentSearchController.h     2025-11-21 16:52:53 UTC 
(rev 29865)
@@ -52,7 +52,7 @@
 
 @end
 
-@class BDSKFileSearchIndex, BDSKTableView, BDSKEdgeView, BibDicument;
+@class BDSKFileSearchIndex, BDSKTableView, BDSKEdgeView, BibDicument, BibItem, 
BDSKFileSearchResult;
 
 @protocol BDSKOwner;
 
@@ -61,9 +61,9 @@
 
 @interface BDSKFileContentSearchController : NSViewController 
<BDSKSearchDelegate, NSTableViewDelegate, NSSearchFieldDelegate>
 {
-    NSMutableArray *results;
-    NSMutableArray *filteredResults;
-    NSSet *filterURLs;
+    NSMutableArray<BDSKFileSearchResult *> *results;
+    NSMutableArray<BDSKFileSearchResult *> *filteredResults;
+    NSSet<NSURL *> *filterURLs;
     BDSKFileSearch *search;
     BDSKFileSearchIndex *searchIndex;
     
@@ -95,30 +95,30 @@
 
 // Use this to connect a search field and initiate a search
 @property (nonatomic, nullable, strong) NSSearchField *searchField;
-@property (nonatomic, nullable, copy) NSArray *savedRecentSearches;
+@property (nonatomic, nullable, copy) NSArray<NSString *> *savedRecentSearches;
 @property (nonatomic, readonly) BOOL shouldShowControlView;
 
-@property (nonatomic, nullable, readonly) NSArray *selectedIdentifierURLs;
-@property (nonatomic, nullable, readonly) NSArray *selectedURLs;
-@property (nonatomic, nullable, readonly) NSArray *selectedResults;
+@property (nonatomic, nullable, readonly) NSArray<NSURL *> 
*selectedIdentifierURLs;
+@property (nonatomic, nullable, readonly) NSArray<NSURL *> *selectedURLs;
+@property (nonatomic, nullable, readonly) NSArray<BDSKFileSearchResult *> 
*selectedResults;
 
-@property (nonatomic, nullable, readonly) NSArray 
*clickedOrSelectedIdentifierURLs;
-@property (nonatomic, nullable, readonly) NSArray *clickedOrSelectedURLs;
-@property (nonatomic, nullable, readonly) NSArray *clickedOrSelectedResults;
+@property (nonatomic, nullable, readonly) NSArray<NSURL *> 
*clickedOrSelectedIdentifierURLs;
+@property (nonatomic, nullable, readonly) NSArray<NSURL *> 
*clickedOrSelectedURLs;
+@property (nonatomic, nullable, readonly) NSArray<BDSKFileSearchResult *> 
*clickedOrSelectedResults;
 
-- (NSArray *)identifierURLsAtIndexes:(NSIndexSet *)indexes;
-- (NSArray *)URLsAtIndexes:(NSIndexSet *)indexes;
-- (NSArray *)resultsAtIndexes:(NSIndexSet *)indexes;
+- (NSArray<NSURL *> *)identifierURLsAtIndexes:(NSIndexSet *)indexes;
+- (NSArray<NSURL *> *)URLsAtIndexes:(NSIndexSet *)indexes;
+- (NSArray<BDSKFileSearchResult *> *)resultsAtIndexes:(NSIndexSet *)indexes;
 
-@property (nonatomic, nullable, copy) NSArray *results;
-@property (nonatomic, nullable, copy) NSArray *filteredResults;
+@property (nonatomic, nullable, copy) NSArray<BDSKFileSearchResult *> *results;
+@property (nonatomic, nullable, copy) NSArray<BDSKFileSearchResult *> 
*filteredResults;
 
-- (void)filterUsingURLs:(nullable NSArray *)newFilterURLs;
+- (void)filterUsingURLs:(nullable NSArray<NSURL *> *)newFilterURLs;
 
 @property (nonatomic, nullable, copy) NSData *sortDescriptorData;
 
 - (void)finish;
-- (void)resetWithPublications:(nullable NSArray *)pubs;
+- (void)resetWithPublications:(nullable NSArray<BibItem *> *)pubs;
 - (void)terminateForDocumentURL:(nullable NSURL *)fileURL;
 
 - (void)searchForString:(nullable NSString *)searchString;

Modified: trunk/bibdesk/BDSKFileMatchConfigController.h
===================================================================
--- trunk/bibdesk/BDSKFileMatchConfigController.h       2025-11-21 10:14:27 UTC 
(rev 29864)
+++ trunk/bibdesk/BDSKFileMatchConfigController.h       2025-11-21 16:52:53 UTC 
(rev 29865)
@@ -43,8 +43,8 @@
     NSSegmentedControl *addRemoveButton;
     NSButton *doneButton;
 
-    NSArray *documents;
-    NSMutableArray *files;
+    NSArray<NSDocument *> *documents;
+    NSMutableArray<NSURL *> *files;
     BOOL useOrphanedFiles;
     
     NSArrayController *documentArrayController;
@@ -67,11 +67,11 @@
 
 - (void)handleDocumentAddRemove:(nullable NSNotification *)note;
 
-@property (nonatomic, copy) NSArray *documents;
+@property (nonatomic, copy) NSArray<NSDocument *> *documents;
 
 @property (nonatomic) BOOL useOrphanedFiles;
 
-- (NSArray *)files;
+- (NSArray<NSURL *> *)files;
 - (NSUInteger)countOfFiles;
 - (NSURL *)objectInFilesAtIndex:(NSUInteger)anIndex;
 - (void)insertObject:(NSURL *)obj inFilesAtIndex:(NSUInteger)anIndex;

Modified: trunk/bibdesk/BDSKFileMatcher.h
===================================================================
--- trunk/bibdesk/BDSKFileMatcher.h     2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKFileMatcher.h     2025-11-21 16:52:53 UTC (rev 29865)
@@ -42,7 +42,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@class BDSKOutlineView;
+@class BDSKOutlineView, BDSKTreeNode;
 
 @interface BDSKFileMatcher : NSWindowController <NSOutlineViewDelegate, 
NSOutlineViewDataSource, QLPreviewPanelDataSource, QLPreviewPanelDelegate>
 {
@@ -52,7 +52,7 @@
     NSButton *abortButton;
     NSButton *configureButton;
     
-    NSMutableArray *matches;
+    NSMutableArray<BDSKTreeNode *> *matches;
     dispatch_group_t group;
     _Atomic(BOOL) shouldAbort;
     

Modified: trunk/bibdesk/BDSKFileMigrationController.h
===================================================================
--- trunk/bibdesk/BDSKFileMigrationController.h 2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKFileMigrationController.h 2025-11-21 16:52:53 UTC (rev 
29865)
@@ -48,7 +48,7 @@
     BOOL keepLocalFileFields;
     BOOL keepRemoteURLFields;
     BOOL useSelection;
-    NSMutableArray *results;
+    NSMutableArray<NSDictionary<NSString *, id> *> *results;
 }
 
 @property (nonatomic, nullable, strong) IBOutlet NSTableView *tableView;

Modified: trunk/bibdesk/BDSKFileSearch.h
===================================================================
--- trunk/bibdesk/BDSKFileSearch.h      2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKFileSearch.h      2025-11-21 16:52:53 UTC (rev 29865)
@@ -41,12 +41,12 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@class BDSKFileSearchIndex, BDSKFileSearch, BDSKSearchPrivateIvars;
+@class BDSKFileSearchIndex, BDSKFileSearch, BDSKFileSearchResult, 
BDSKSearchPrivateIvars;
 
 @protocol BDSKSearchDelegate <NSObject>
 
 // sent as the search is in progress; anArray includes all results
-- (void)search:(BDSKFileSearch *)aSearch didUpdateWithResults:(NSArray 
*)anArray;
+- (void)search:(BDSKFileSearch *)aSearch 
didUpdateWithResults:(NSArray<BDSKFileSearchResult *> *)anArray;
 
 // sent when the search index status changed
 - (void)search:(BDSKFileSearch *)aSearch 
didUpdateStatus:(BDSKSearchIndexStatus)status;
@@ -61,7 +61,7 @@
     @private
     SKSearchRef search;
     BDSKFileSearchIndex *searchIndex;
-    NSMutableSet *searchResults;
+    NSMutableSet<BDSKFileSearchResult *> *searchResults;
     
     NSString *searchString;
     SKSearchOptions options;

Modified: trunk/bibdesk/BDSKFileSearchIndex.h
===================================================================
--- trunk/bibdesk/BDSKFileSearchIndex.h 2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKFileSearchIndex.h 2025-11-21 16:52:53 UTC (rev 29865)
@@ -41,7 +41,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@class BDSKFileSearchIndex, BDSKManyToManyDictionary, BDSKReadWriteLock, 
BibDocument;
+@class BDSKFileSearchIndex, BDSKManyToManyDictionary, BDSKReadWriteLock, 
BibDocument, BibItem;
 @protocol BDSKOwner;
 
 @protocol BDSKFileSearchIndexDelegate <NSObject>
@@ -70,9 +70,9 @@
 @interface BDSKFileSearchIndex : NSObject {
     SKIndexRef skIndex;
     NSMutableData *indexData;
-    NSMapTable *URLsForIdentifierURLs;
-    NSMapTable *identifierURLsForURLs;
-    NSMutableDictionary *signatures;
+    NSMapTable<NSURL *, NSURL *> *URLsForIdentifierURLs;
+    NSMapTable<NSURL *, NSURL *> *identifierURLsForURLs;
+    NSMutableDictionary<NSURL *, id> *signatures;
     __weak id<BDSKFileSearchIndexDelegate> delegate;
     
     BDSKReadWriteLock *rwLock;
@@ -91,7 +91,7 @@
 // Warning:  it is /not/ safe to write to this SKIndexRef directly; use it 
only for reading.
 @property (nonatomic, readonly) SKIndexRef index NS_RETURNS_INNER_POINTER;
 
-- (void)resetWithPublications:(nullable NSArray *)pubs;
+- (void)resetWithPublications:(nullable NSArray<BibItem *> *)pubs;
 
 // Required before disposing of the index.  After calling cancel, the index is 
no longer viable.
 - (void)cancelForDocumentURL:(NSURL *)documentURL;
@@ -100,7 +100,7 @@
 
 @property (nonatomic, nullable, weak) id <BDSKFileSearchIndexDelegate> 
delegate;
 
-- (nullable NSSet *)identifierURLsForURL:(NSURL *)theURL;
+- (nullable NSSet<NSURL *> *)identifierURLsForURL:(NSURL *)theURL;
 
 // Poll this for progress bar updates during indexing
 @property (readonly) double progressValue;

Modified: trunk/bibdesk/BDSKFiler.h
===================================================================
--- trunk/bibdesk/BDSKFiler.h   2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKFiler.h   2025-11-21 16:52:53 UTC (rev 29865)
@@ -70,10 +70,12 @@
     BDSKAutoFileOptionForce = 1 << 3
 };
 
+@class BibItem, BDSKLinkedFile;
+
 @interface BDSKFiler : NSWindowController {
     NSProgressIndicator *progressIndicator;
     BOOL filing;
-    NSMutableArray *pendingFilings;
+    NSMutableArray<NSDictionary<NSString *, id> *> *pendingFilings;
 }
 
 @property (class, nonatomic, readonly) BDSKFiler *sharedFiler;
@@ -92,7 +94,7 @@
        @discussion     This is the main method that should be used to autofile 
papers.
 It calls the necessary methods to do the move and generates the new locations 
for the papers. 
 */
-- (void)autoFileLinkedFiles:(NSArray *)papers fromDocument:(BibDocument *)doc 
check:(BOOL)check actionName:(nullable NSString *)actionName;
+- (void)autoFileLinkedFiles:(NSArray<BDSKLinkedFile *> *)papers 
fromDocument:(BibDocument *)doc check:(BOOL)check actionName:(nullable NSString 
*)actionName;
 
 /*!
  @method        autoFileItems:forField:fromDocument:doc:check:
@@ -105,7 +107,7 @@
  @discussion    This is the main method that should be used to autofile papers.
  It calls the necessary methods to do the move and generates the new locations 
for the papers.
  */
-- (void)autoFileItems:(NSArray *)items forField:(NSString *)field 
fromDocument:(BibDocument *)doc check:(BOOL)check actionName:(nullable NSString 
*)actionName;
+- (void)autoFileItems:(NSArray<BibItem *> *)items forField:(NSString *)field 
fromDocument:(BibDocument *)doc check:(BOOL)check actionName:(nullable NSString 
*)actionName;
 
 /*!
        @method         movePapers:forField:fromDocument:options:
@@ -123,7 +125,7 @@
 BDSKAutoFileOptionCheckComplete indicates that for initial moves a check will 
be done whether all required fields are set.
 BDSKAutoFileOptionForce forces AutoFiling, even if there may be problems 
moving the file.
 */
-- (void)movePapers:(NSArray *)paperInfos forField:(NSString *)field 
fromDocument:(BibDocument *)doc options:(BDSKFilerOptions)options 
actionName:(nullable NSString *)actionName;
+- (void)movePapers:(NSArray<NSDictionary<NSString *, id> *> *)paperInfos 
forField:(NSString *)field fromDocument:(BibDocument *)doc 
options:(BDSKFilerOptions)options actionName:(nullable NSString *)actionName;
 
 /*!
        @method         moveItemAtURL:toURL:force:error:

Modified: trunk/bibdesk/BDSKFilerErrorController.h
===================================================================
--- trunk/bibdesk/BDSKFilerErrorController.h    2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKFilerErrorController.h    2025-11-21 16:52:53 UTC (rev 
29865)
@@ -54,7 +54,7 @@
     NSInteger options;
     NSString *actionName;
     
-       NSArray *errorInfoDicts;
+       NSArray<NSDictionary<NSString *, id> *> *errorInfoDicts;
 }
 
 - (instancetype)initWithErrors:(NSArray *)infoDicts forField:(NSString *)field 
options:(NSInteger)masks actionName:(nullable NSString *)actionName 
NS_DESIGNATED_INITIALIZER;
@@ -77,9 +77,9 @@
 - (IBAction)selectAll:(nullable id)sender;
 - (IBAction)showFile:(nullable id)sender;
 
-- (NSArray *)errorInfoDicts;
+- (NSArray<NSDictionary<NSString *, id> *> *)errorInfoDicts;
 - (NSUInteger)countOfErrorInfoDicts;
-- (NSDictionary *)objectInErrorInfoDictsAtIndex:(NSUInteger)index;
+- (NSDictionary<NSString *, id> 
*)objectInErrorInfoDictsAtIndex:(NSUInteger)index;
 
 @end
 

Modified: trunk/bibdesk/BDSKFilterController.h
===================================================================
--- trunk/bibdesk/BDSKFilterController.h        2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKFilterController.h        2025-11-21 16:52:53 UTC (rev 
29865)
@@ -46,10 +46,10 @@
 @interface BDSKFilterController : NSWindowController <NSTouchBarDelegate> {
     NSView *conditionsView;
     NSLayoutConstraint *widthConstraint;
-    NSMutableArray *verticalConstraints;
+    NSMutableArray<NSLayoutConstraint *> *verticalConstraints;
     NSButton *okButton;
     NSButton *cancelButton;
-       NSMutableArray *conditionControllers;
+       NSMutableArray<BDSKConditionController *> *conditionControllers;
        BDSKConjunction conjunction;
     NSUndoManager *undoManager;
 }
@@ -66,12 +66,12 @@
 - (void)insertNewConditionAfter:(BDSKConditionController 
*)aConditionController;
 - (void)removeConditionController:(BDSKConditionController 
*)aConditionController;
 
-@property (nonatomic, readonly) NSArray *conditionControllers;
+@property (nonatomic, readonly) NSArray<BDSKConditionController *> 
*conditionControllers;
 - (void)insertObject:(BDSKConditionController *)newController 
inConditionControllersAtIndex:(NSUInteger)index;
 - (void)removeObjectFromConditionControllersAtIndex:(NSUInteger)index;
 
 @property (nonatomic) BDSKConjunction conjunction;
-@property (nonatomic, readonly) NSArray *conditions;
+@property (nonatomic, readonly) NSArray<BDSKCondition *> *conditions;
 @property (nonatomic, readonly) BOOL hasMultipleConditions;
 
 - (BOOL)commitEditing;

Modified: trunk/bibdesk/BDSKFindController.h
===================================================================
--- trunk/bibdesk/BDSKFindController.h  2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKFindController.h  2025-11-21 16:52:53 UTC (rev 29865)
@@ -61,7 +61,7 @@
     BDSKOperationAppend = 3,
 };
 
-@class BibDocument;
+@class BibDocument, BibItem;
 
 @interface BDSKFindController : NSWindowController <NSTouchBarDelegate> {    
     // outlets
@@ -87,8 +87,8 @@
     NSObjectController *objectController;
        
        NSTextView *findFieldEditor;
-       NSMutableArray *findHistory;
-       NSMutableArray *replaceHistory;
+       NSMutableArray<NSString *> *findHistory;
+       NSMutableArray<NSString *> *replaceHistory;
        NSString *findString;
        NSString *replaceString;
        BDSKSearchType searchType;
@@ -190,13 +190,13 @@
 - (BOOL)validateReplaceAsMacro:(id _Nullable * _Nonnull)value error:(NSError 
**)error;
 - (BOOL)validateOperation:(id _Nullable * _Nonnull)value error:(NSError 
**)error;
 
-- (NSArray *)findHistory;
+- (NSArray<NSString *> *)findHistory;
 - (NSUInteger)countOfFindHistory;
 - (NSString *)objectInFindHistoryAtIndex:(NSUInteger)index;
 - (void)insertObject:(NSString *)obj inFindHistoryAtIndex:(NSUInteger)index;
 - (void)removeObjectFromFindHistoryAtIndex:(NSUInteger)index;
 
-- (NSArray *)replaceHistory;
+- (NSArray<NSString *> *)replaceHistory;
 - (NSUInteger)countOfReplaceHistory;
 - (NSString *)objectInReplaceHistoryAtIndex:(NSUInteger)index;
 - (void)insertObject:(NSString *)obj inReplaceHistoryAtIndex:(NSUInteger)index;
@@ -242,7 +242,7 @@
     @param      theDocument (description)
     @result     (description)
 */
-- (nullable NSArray *)currentFoundItemsInDocument:(BibDocument *)theDocument;
+- (nullable NSArray<BibItem *> *)currentFoundItemsInDocument:(BibDocument 
*)theDocument;
 
 /*!
     @method     findAndReplaceInItems:ofDocument:
@@ -252,7 +252,7 @@
     @param      theDocument The document containing the publications
     @result     The number of replacements made
 */
-- (NSUInteger)findAndReplaceInItems:(NSArray *)arrayOfPubs 
ofDocument:(BibDocument *)theDocument;
+- (NSUInteger)findAndReplaceInItems:(NSArray<BibItem *> *)arrayOfPubs 
ofDocument:(BibDocument *)theDocument;
 
 @end
 

Modified: trunk/bibdesk/BDSKFormatParser.h
===================================================================
--- trunk/bibdesk/BDSKFormatParser.h    2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKFormatParser.h    2025-11-21 16:52:53 UTC (rev 29865)
@@ -41,6 +41,8 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+@class BibAuthor;
+
 @protocol BDSKParseableItem <NSObject>
 - (NSString *)citeKey;
 - (NSString *)title;
@@ -47,7 +49,7 @@
 - (NSString *)container;
 - (NSString *)stringValueOfField:(NSString *)field;
 - (NSInteger)integerValueOfField:(NSString *)field;
-- (NSArray *)peopleArrayForField:(NSString *)field;
+- (NSArray<BibAuthor *> *)peopleArrayForField:(NSString *)field;
 - (nullable NSURL *)localFileURLForField:(NSString *)field;
 - (nullable id<BDSKOwner>)owner;
 @end

Modified: trunk/bibdesk/BDSKItemPasteboardHelper.h
===================================================================
--- trunk/bibdesk/BDSKItemPasteboardHelper.h    2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKItemPasteboardHelper.h    2025-11-21 16:52:53 UTC (rev 
29865)
@@ -49,11 +49,11 @@
 - (void)pasteboardHelperDidEndGenerating:(BDSKItemPasteboardHelper 
*)pboardHelper;
 @end
 
-@class BDSKTeXTask;
+@class BDSKTeXTask, BibItem;
 
 @interface BDSKItemPasteboardHelper : NSObject <NSPasteboardItemDataProvider> {
-    NSMutableDictionary *promisedPboardTypes;
-    NSMutableDictionary *texTasks;
+    NSMutableDictionary<NSString *, NSMutableDictionary<NSString *, id> *> 
*promisedPboardTypes;
+    NSMutableDictionary<NSString *, BDSKTeXTask *> *texTasks;
     BDSKTeXTask *texTask;
     NSInteger generatorCount;
     __weak id<BDSKItemPasteboardHelperDelegate> delegate;
@@ -62,9 +62,9 @@
 
 @property (nonatomic, nullable, weak) id <BDSKItemPasteboardHelperDelegate> 
delegate;
 
-- (void)writeItems:(NSArray *)items textRepresentation:(nullable id)text 
forDragCopyType:(BDSKDragCopyType)dragCopyType toPasteboard:(NSPasteboard 
*)pboard;
+- (void)writeItems:(NSArray<BibItem *> *)items textRepresentation:(nullable 
id)text forDragCopyType:(BDSKDragCopyType)dragCopyType 
toPasteboard:(NSPasteboard *)pboard;
 
-- (nullable NSArray *)promisedItemsForPasteboard:(NSPasteboard *)pboard;
+- (nullable NSArray<BibItem *> *)promisedItemsForPasteboard:(NSPasteboard 
*)pboard;
 
 @end
 

Modified: trunk/bibdesk/BDSKItemSearchIndexes.h
===================================================================
--- trunk/bibdesk/BDSKItemSearchIndexes.h       2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKItemSearchIndexes.h       2025-11-21 16:52:53 UTC (rev 
29865)
@@ -40,20 +40,22 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+@class BibItem;
+
 @interface BDSKItemSearchIndexes : NSObject {
     CFMutableDictionaryRef searchIndexes;
     CFMutableSetRef indexesToFlush;
-    NSMutableSet *indexedFields;
+    NSMutableSet<NSString *> *indexedFields;
 }
 
-- (void)removePublications:(NSArray *)pubs;
-- (void)addPublications:(NSArray *)pubs;
+- (void)removePublications:(NSArray<BibItem *> *)pubs;
+- (void)addPublications:(NSArray<BibItem *> *)pubs;
 
 - (nullable SKIndexRef)indexForField:(NSString *)field CF_RETURNS_RETAINED;
 
 - (void)reset;
 
-- (void)resetIndexedFieldsWithPublications:(nullable NSArray *)pubs;
+- (void)resetIndexedFieldsWithPublications:(nullable NSArray<BibItem *> *)pubs;
 
 @end
 

Modified: trunk/bibdesk/BDSKMacroResolver.h
===================================================================
--- trunk/bibdesk/BDSKMacroResolver.h   2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKMacroResolver.h   2025-11-21 16:52:53 UTC (rev 29865)
@@ -55,7 +55,7 @@
 @protocol BDSKOwner;
 
 @interface BDSKMacroResolver : NSObject {
-    NSMapTable *macroDefinitions;
+    NSMapTable<NSString *, NSString *> *macroDefinitions;
     __weak id<BDSKOwner>owner;
     unsigned long long modification;
 }
@@ -70,10 +70,10 @@
 
 @property (nonatomic, readonly) NSString *bibTeXString;
 
-@property (nonatomic, null_resettable,  copy) NSMapTable *macroDefinitions;
+@property (nonatomic, null_resettable,  copy) NSMapTable<NSString *, NSString 
*> *macroDefinitions;
 
 // returns global definitions + local overrides
-@property (nonatomic, readonly) NSMapTable *allMacroDefinitions;
+@property (nonatomic, readonly) NSMapTable<NSString *, NSString *> 
*allMacroDefinitions;
 
 - (nullable NSString *)valueOfMacro:(NSString *)macro;
 // these use undo
@@ -81,7 +81,7 @@
 - (void)changeMacro:(NSString *)oldMacro to:(NSString *)newMacro;
 
 - (BOOL)string:(NSString *)string dependsOnMacro:(NSString *)macro;
-- (BOOL)string:(NSString *)string dependsOnMacro:(NSString *)macro 
inMacroDefinitions:(nullable NSMapTable *)dictionary;
+- (BOOL)string:(NSString *)string dependsOnMacro:(NSString *)macro 
inMacroDefinitions:(nullable NSMapTable<NSString *, NSString *> *)dictionary;
 
 @property (nonatomic, readonly) unsigned long long modification;
 

Modified: trunk/bibdesk/BDSKMacroWindowController.h
===================================================================
--- trunk/bibdesk/BDSKMacroWindowController.h   2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKMacroWindowController.h   2025-11-21 16:52:53 UTC (rev 
29865)
@@ -48,7 +48,7 @@
     NSButton *closeButton;
     NSSegmentedControl *addRemoveButton;
     BDSKMacroResolver *macroResolver;
-    NSMutableArray *macros;
+    NSMutableArray<BDSKMacro *> *macros;
        BDSKComplexStringFormatter *tableCellFormatter;
     BOOL isEditable;
     BOOL showAll;
@@ -65,8 +65,8 @@
 
 @property (nonatomic, readonly) BDSKMacroResolver *macroResolver;
 
-- (NSArray *)macros;
-- (void)setMacros:(NSArray *)newMacros;
+- (NSArray<BDSKMacro *> *)macros;
+- (void)setMacros:(NSArray<BDSKMacro *> *)newMacros;
 - (NSUInteger)countOfMacros;
 - (BDSKMacro *)objectInMacrosAtIndex:(NSUInteger)idx;
 - (void)insertObject:(BDSKMacro *)obj inMacrosAtIndex:(NSUInteger)idx;

Modified: trunk/bibdesk/BDSKMergeController.h
===================================================================
--- trunk/bibdesk/BDSKMergeController.h 2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKMergeController.h 2025-11-21 16:52:53 UTC (rev 29865)
@@ -48,8 +48,8 @@
     BibDocument *document;
     void (^completionHandler)(BOOL, BDSKAutoGenerateStatus);
     
-    NSMutableArray *overwriteFields;
-    NSMutableArray *addedFields;
+    NSMutableArray<NSDictionary<NSString *, id> *> *overwriteFields;
+    NSMutableArray<NSDictionary<NSString *, id> *> *addedFields;
     
     NSTableView *tableView;
     NSButton *selectAllButton;
@@ -74,7 +74,7 @@
 
 @property (nonatomic, readonly) BOOL mayOverwrite;
 
-@property (nonatomic, nullable, readonly) NSArray *currentFields;
+@property (nonatomic, nullable, readonly) NSArray<NSString *> *currentFields;
 
 - (void)merge;
 - (void)mergeOverwriting;

Modified: trunk/bibdesk/BDSKMetadataCacheOperation.h
===================================================================
--- trunk/bibdesk/BDSKMetadataCacheOperation.h  2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKMetadataCacheOperation.h  2025-11-21 16:52:53 UTC (rev 
29865)
@@ -40,11 +40,13 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+@class BibItem;
+
 @interface BDSKMetadataCacheOperation : NSOperation {
-    NSArray *publicationInfos;
+    NSArray<NSDictionary<NSString *, id> *> *publicationInfos;
     NSURL *documentURL;
 }
-- (instancetype)initWithPublicationInfos:(NSArray *)pubInfos 
forDocumentURL:(NSURL *)aURL NS_DESIGNATED_INITIALIZER;
+- (instancetype)initWithPublicationInfos:(NSArray<NSDictionary<NSString *, id> 
*> *)pubInfos forDocumentURL:(NSURL *)aURL NS_DESIGNATED_INITIALIZER;
 - (instancetype)init NS_UNAVAILABLE;
 @end
 
@@ -52,7 +54,7 @@
     NSOperationQueue *queue;
 }
 @property (class, nonatomic, readonly) BDSKMetadataCacheQueue *sharedQueue;
-- (void)saveMetadataCacheForPublications:(NSArray *)publications 
documentURL:(NSURL *)url isUpdate:(BOOL)update;
+- (void)saveMetadataCacheForPublications:(NSArray<BibItem *> *)publications 
documentURL:(NSURL *)url isUpdate:(BOOL)update;
 @end
 
 NS_ASSUME_NONNULL_END

Modified: trunk/bibdesk/BDSKNotesSearchIndex.h
===================================================================
--- trunk/bibdesk/BDSKNotesSearchIndex.h        2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKNotesSearchIndex.h        2025-11-21 16:52:53 UTC (rev 
29865)
@@ -44,7 +44,7 @@
 @protocol BDSKOwner;
 @protocol BDSKNotesSearchIndexDelegate;
 
-@class BDSKReadWriteLock;
+@class BDSKReadWriteLock, BibItem;
 
 @interface BDSKNotesSearchIndex : NSObject {
     SKIndexRef skIndex;
@@ -63,7 +63,7 @@
 
 @property (nonatomic, nullable, weak) id <BDSKNotesSearchIndexDelegate> 
delegate;
 
-- (void)resetWithPublications:(nullable NSArray *)pubs;
+- (void)resetWithPublications:(nullable NSArray<BibItem *> *)pubs;
 
 // Warning:  it is /not/ safe to write to this SKIndexRef directly; use it 
only for reading.
 @property (nonatomic, readonly) SKIndexRef index CF_RETURNS_RETAINED;

Modified: trunk/bibdesk/BDSKNotesWindowController.h
===================================================================
--- trunk/bibdesk/BDSKNotesWindowController.h   2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKNotesWindowController.h   2025-11-21 16:52:53 UTC (rev 
29865)
@@ -43,7 +43,7 @@
 
 @interface BDSKNotesWindowController : NSWindowController 
<BDSKNotesOutlineViewDelegate, NSOutlineViewDataSource, NSSplitViewDelegate, 
NSTouchBarDelegate> {
     NSURL *url;
-    NSMutableArray *notes;
+    NSMutableArray<NSDictionary<NSString *, id> *> *notes;
     NSArray *tags;
     double rating;
     CGFloat lastTagsHeight;
@@ -67,7 +67,7 @@
 @property (nonatomic, nullable, strong) IBOutlet NSButton *refreshButton;
 @property (nonatomic, nullable, strong) IBOutlet NSButton *openInSkimButton;
 
-@property (nonatomic, nullable, copy) NSArray *tags;
+@property (nonatomic, nullable, copy) NSArray<NSString *> *tags;
 @property (nonatomic) double rating;
 
 - (IBAction)refresh:(nullable id)sender;

Modified: trunk/bibdesk/BDSKOrphanedFilesFinder.h
===================================================================
--- trunk/bibdesk/BDSKOrphanedFilesFinder.h     2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKOrphanedFilesFinder.h     2025-11-21 16:52:53 UTC (rev 
29865)
@@ -57,8 +57,8 @@
     NSString *searchString;
     BOOL showsMatches;
     BOOL wasLaunched;
-    NSArray *draggedFiles;
-    NSMutableArray *foundFiles;
+    NSArray<NSURL *> *draggedFiles;
+    NSMutableArray<NSURL *> *foundFiles;
     dispatch_queue_t queue;
     _Atomic(BOOL) keepEnumerating;
     _Atomic(BOOL) allFilesEnumerated;
@@ -86,7 +86,7 @@
 - (IBAction)search:(nullable id)sender;
 - (IBAction)showMatches:(nullable id)sender;
 
-- (NSArray *)orphanedFiles;
+- (NSArray<NSURL *> *)orphanedFiles;
 - (NSUInteger)countOfOrphanedFiles;
 - (NSURL *)objectInOrphanedFilesAtIndex:(NSUInteger)theIndex;
 - (void)insertObject:(NSURL *)obj inOrphanedFilesAtIndex:(NSUInteger)theIndex;

Modified: trunk/bibdesk/BDSKPersonController.h
===================================================================
--- trunk/bibdesk/BDSKPersonController.h        2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKPersonController.h        2025-11-21 16:52:53 UTC (rev 
29865)
@@ -47,9 +47,9 @@
 @interface BDSKPersonController : NSWindowController <NSTableViewDelegate, 
NSSplitViewDelegate, BDSKDragImageViewDelegate, NSPasteboardItemDataProvider, 
NSFilePromiseProviderDelegate> {
     BibAuthor *person;
     __weak id<BDSKOwner> owner;
-    NSMutableArray *publicationItems;
-    NSSet *names;
-    NSSet *fields;
+    NSMutableArray<NSDictionary<NSString *, id> *> *publicationItems;
+    NSSet<NSString *> *names;
+    NSSet<NSString *> *fields;
     NSTextField *nameTextField;
     BDSKDragImageView *imageView;
     BDSKTableView *publicationTableView;
@@ -90,9 +90,9 @@
 @property (nonatomic, nullable, strong) IBOutlet NSTextField *editMessageField;
 
 @property (nonatomic, strong) BibAuthor *person;
-@property (nonatomic, nullable, copy) NSArray *publicationItems;
-@property (nonatomic, nullable, copy) NSSet *names;
-@property (nonatomic, copy) NSSet *fields;
+@property (nonatomic, nullable, copy) NSArray<NSDictionary<NSString *, id> *> 
*publicationItems;
+@property (nonatomic, nullable, copy) NSSet<NSString *> *names;
+@property (nonatomic, copy) NSSet<NSString *> *fields;
 @property (nonatomic, readonly) NSImage *image;
 @property (nonatomic, nullable, readonly) id<BDSKOwner> personOwner;
 

Modified: trunk/bibdesk/BDSKPreferenceController.h
===================================================================
--- trunk/bibdesk/BDSKPreferenceController.h    2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKPreferenceController.h    2025-11-21 16:52:53 UTC (rev 
29865)
@@ -40,7 +40,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@class SPUStandardUpdaterController;
+@class SPUStandardUpdaterController, BDSKPreferenceRecord, BDSKPreferencePane;
 
 @interface BDSKPreferenceController : NSWindowController <NSToolbarDelegate, 
NSWindowDelegate, NSTouchBarDelegate> {
     NSView *controlView;
@@ -56,15 +56,15 @@
     NSView *iconView;
     CALayer *spotlightLayer;
     NSTextView *fieldEditor;
-    NSMutableArray *categories;
-    NSMutableDictionary *categoryDicts;
-    NSMutableDictionary *records;
-    NSMutableDictionary *panes;
+    NSMutableArray<NSString *> *categories;
+    NSMutableDictionary<NSString *, NSDictionary<NSString *, id> *> 
*categoryDicts;
+    NSMutableDictionary<NSString *, BDSKPreferenceRecord *> *records;
+    NSMutableDictionary<NSString *, BDSKPreferencePane *> *panes;
     NSString *selectedPaneIdentifier;
-    NSMutableDictionary *toolbarItems;
+    NSMutableDictionary<NSString *, NSToolbarItem *> *toolbarItems;
     NSString *helpBookName;
-    NSMutableDictionary *identifierSearchTerms;
-    NSMutableDictionary *iconButtons;
+    NSMutableDictionary<NSString *, NSString *> *identifierSearchTerms;
+    NSMutableDictionary<NSString *, NSButton *> *iconButtons;
     SPUStandardUpdaterController *updaterController;
 }
 
@@ -90,9 +90,9 @@
 - (IBAction)search:(nullable id)sender;
 - (IBAction)changeFont:(nullable id)sender;
 
-@property (nonatomic, readonly) NSArray *categories;
+@property (nonatomic, readonly) NSArray<NSString *> *categories;
 - (NSArray *)paneIdentifiersForCategory:(NSString *)category;
-@property (nonatomic, readonly) NSArray *allPaneIdentifiers;
+@property (nonatomic, readonly) NSArray<NSString *> *allPaneIdentifiers;
 
 @property (nonatomic, readonly) NSString *selectedPaneIdentifier;
 

Modified: trunk/bibdesk/BDSKPreferencePane.h
===================================================================
--- trunk/bibdesk/BDSKPreferencePane.h  2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKPreferencePane.h  2025-11-21 16:52:53 UTC (rev 29865)
@@ -45,8 +45,8 @@
 @interface BDSKPreferencePane : NSViewController {
     __weak BDSKPreferenceController *preferenceController;
     NSUserDefaults *sud;
-    NSMutableArray *observedKeys;
-    NSMutableDictionary *dependentKeys;
+    NSMutableArray<NSString *> *observedKeys;
+    NSMutableDictionary<NSString *, NSString *> *dependentKeys;
 }
 
 - (instancetype)initWithRecord:(BDSKPreferenceRecord *)aRecord 
forPreferenceController:(BDSKPreferenceController *)aController 
NS_DESIGNATED_INITIALIZER;
@@ -64,7 +64,7 @@
 @property (nonatomic, nullable, readonly) NSImage *icon;
 @property (nonatomic, nullable, readonly) NSString *helpAnchor;
 @property (nonatomic, nullable, readonly) NSURL *helpURL;
-@property (nonatomic, nullable, readonly) NSDictionary *initialValues;
+@property (nonatomic, nullable, readonly) NSDictionary<NSString *, id> 
*initialValues;
 
 // these are sent to the relevant pane(s), usually the selected pane, and by 
default do nothing
 

Modified: trunk/bibdesk/BDSKSearchBookmarkController.h
===================================================================
--- trunk/bibdesk/BDSKSearchBookmarkController.h        2025-11-21 10:14:27 UTC 
(rev 29864)
+++ trunk/bibdesk/BDSKSearchBookmarkController.h        2025-11-21 16:52:53 UTC 
(rev 29865)
@@ -53,8 +53,8 @@
     NSButton *deleteTouchBarButton;
     NSButton *editTouchBarButton;
     BDSKSearchBookmark *bookmarkRoot;
-    NSArray *draggedBookmarks;
-    NSMutableDictionary *toolbarItems;
+    NSArray<BDSKSearchBookmark *> *draggedBookmarks;
+    NSMutableDictionary<NSString *, NSToolbarItem *> *toolbarItems;
     NSUndoManager *undoManager;
     BOOL needsBeginUpdates;
 }

Modified: trunk/bibdesk/BDSKSearchGroupServerManager.h
===================================================================
--- trunk/bibdesk/BDSKSearchGroupServerManager.h        2025-11-21 10:14:27 UTC 
(rev 29864)
+++ trunk/bibdesk/BDSKSearchGroupServerManager.h        2025-11-21 16:52:53 UTC 
(rev 29865)
@@ -43,10 +43,10 @@
 @class BDSKServerInfo;
 
 @interface BDSKSearchGroupServerManager : NSObject {
-    NSMutableArray *searchGroupServers;
-    NSMutableDictionary *searchGroupServerFiles;
-    NSMutableSet *defaultSearchGroupServerNames;
-    NSArray *sortDescriptors;
+    NSMutableArray<BDSKServerInfo *> *searchGroupServers;
+    NSMutableDictionary<NSString *, NSString *> *searchGroupServerFiles;
+    NSMutableSet<NSString *> *defaultSearchGroupServerNames;
+    NSArray<NSSortDescriptor *> *sortDescriptors;
 }
 
 @property (class, nonatomic, readonly) id sharedManager;
@@ -53,7 +53,7 @@
 
 - (void)resetServers;
 
-@property (nonatomic, readonly) NSArray *servers;
+@property (nonatomic, readonly) NSArray<BDSKServerInfo *> *servers;
 
 - (BOOL)isCustomizedDefaultServerName:(NSString *)name;
 

Modified: trunk/bibdesk/BDSKSearchGroupSheetController.h
===================================================================
--- trunk/bibdesk/BDSKSearchGroupSheetController.h      2025-11-21 10:14:27 UTC 
(rev 29864)
+++ trunk/bibdesk/BDSKSearchGroupSheetController.h      2025-11-21 16:52:53 UTC 
(rev 29865)
@@ -115,8 +115,8 @@
 @property (nonatomic, getter=isEditable) BOOL editable;
 @property (nonatomic, getter=isResettable) BOOL resettable;
 
-@property (nonatomic, readonly) NSArray *databases;
-@property (nonatomic, readonly) NSArray *recordSyntaxes;
+@property (nonatomic, readonly) NSArray<NSString *> *databases;
+@property (nonatomic, readonly) NSArray<NSString *> *recordSyntaxes;
 
 @property (nonatomic, copy) BDSKServerInfo *serverInfo;
 

Modified: trunk/bibdesk/BDSKSharingBrowser.h
===================================================================
--- trunk/bibdesk/BDSKSharingBrowser.h  2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKSharingBrowser.h  2025-11-21 16:52:53 UTC (rev 29865)
@@ -42,16 +42,18 @@
 
 extern NSString * const BDSKNetServiceDomain;
 
+@class BDSKSharingClient;
+
 @interface BDSKSharingBrowser : NSObject <NSNetServiceDelegate, 
NSNetServiceBrowserDelegate> {
-    NSMutableSet *sharingClients;
+    NSMutableSet<BDSKSharingClient *> *sharingClients;
     NSNetServiceBrowser *browser;
-    NSMutableArray *unresolvedNetServices;
-    NSMutableSet *undecidedNetServices;
+    NSMutableArray<NSNetService *> *unresolvedNetServices;
+    NSMutableSet<NSNetService *> *undecidedNetServices;
 }
 
 @property (class, nonatomic, readonly) BDSKSharingBrowser *sharedBrowser;
 
-@property (nonatomic, nullable, readonly) NSSet *sharingClients;
+@property (nonatomic, nullable, readonly) NSSet<BDSKSharingClient *> 
*sharingClients;
 
 @property (nonatomic, readonly, getter=isBrowsing) BOOL browsing;
 

Modified: trunk/bibdesk/BDSKStringEncodingManager.h
===================================================================
--- trunk/bibdesk/BDSKStringEncodingManager.h   2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKStringEncodingManager.h   2025-11-21 16:52:53 UTC (rev 
29865)
@@ -58,7 +58,7 @@
 
 @interface BDSKStringEncodingManager : NSWindowController 
<NSTableViewDataSource, NSTableViewDelegate> {
     NSTableView *tableView;
-    NSArray *encodings;
+    NSArray<NSNumber *> *encodings;
 }
 
 @property (nonatomic, nullable, strong) IBOutlet NSTableView *tableView;
@@ -74,7 +74,7 @@
 
 @property (class, nonatomic, readonly) NSStringEncoding defaultEncoding;
 
-@property (nonatomic, readonly) NSArray *enabledEncodings;
+@property (nonatomic, readonly) NSArray<NSNumber *> *enabledEncodings;
 
 - (IBAction)encodingListChanged:(nullable id)sender;
 - (IBAction)clearAll:(nullable id)sender;

Modified: trunk/bibdesk/BDSKTeXTask.h
===================================================================
--- trunk/bibdesk/BDSKTeXTask.h 2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKTeXTask.h 2025-11-21 16:52:53 UTC (rev 29865)
@@ -58,13 +58,13 @@
 @interface BDSKTeXTask : NSObject {    
     NSURL *texTemplateURL;
     BDSKTeXPath *texPath;
-    NSDictionary *environment;
+    NSDictionary<NSString *, NSString *> *environment;
        
        __weak id<BDSKTeXTaskDelegate> delegate;
     
     BDSKTaskAndGeneratedType *currentTask;
     
-    NSMutableArray *pendingTasks;
+    NSMutableArray<BDSKTaskAndGeneratedType *> *pendingTasks;
     
     NSUInteger generatedDataMask;
 }

Modified: trunk/bibdesk/BDSKTemplateDocument.h
===================================================================
--- trunk/bibdesk/BDSKTemplateDocument.h        2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKTemplateDocument.h        2025-11-21 16:52:53 UTC (rev 
29865)
@@ -86,7 +86,7 @@
     NSTextField *fieldField;
     NSComboBox *sizeComboBox;
     
-    NSArray *optionControls;
+    NSArray<NSArray<NSView *> *> *optionControls;
     
     NSMenu *fieldOptionsMenu;
     NSMenu *urlOptionsMenu;
@@ -95,13 +95,13 @@
     NSMenu *dateOptionsMenu;
     NSMenu *numberOptionsMenu;
     
-    NSArray *fonts;
-    NSArray *tokenFonts;
-    NSDictionary *templateOptions;
-    NSMutableArray *typeTemplates;
-    NSMutableArray *specialTokens;
-    NSMutableArray *defaultTokens;
-    NSMutableDictionary *fieldTokens;
+    NSArray<NSFont *> *fonts;
+    NSArray<NSFont *> *tokenFonts;
+    NSDictionary<NSString *, NSDictionary<NSString *, NSString *> *> 
*templateOptions;
+    NSMutableArray<BDSKTypeTemplate *> *typeTemplates;
+    NSMutableArray<BDSKToken *> *specialTokens;
+    NSMutableArray<BDSKToken *> *defaultTokens;
+    NSMutableDictionary<NSString *, BDSKToken *> *fieldTokens;
     NSMutableAttributedString *prefixTemplate;
     NSMutableAttributedString *suffixTemplate;
     NSMutableAttributedString *separatorTemplate;
@@ -146,10 +146,10 @@
 @property (nonatomic, nullable, strong) IBOutlet NSComboBox *sizeComboBox;
 @property (nonatomic, nullable, strong) IBOutlet NSArray *optionControls;
 
-@property (nonatomic, readonly) NSArray *typeTemplates;
+@property (nonatomic, readonly) NSArray<BDSKTypeTemplate *> *typeTemplates;
 
-@property (nonatomic, copy) NSArray *specialTokens;
-@property (nonatomic, copy) NSArray *defaultTokens;
+@property (nonatomic, copy) NSArray<BDSKToken *> *specialTokens;
+@property (nonatomic, copy) NSArray<BDSKToken *> *defaultTokens;
 
 @property (nonatomic, strong) NSAttributedString *prefixTemplate;
 @property (nonatomic, strong) NSAttributedString *suffixTemplate;

Modified: trunk/bibdesk/BDSKTemplateParser.h
===================================================================
--- trunk/bibdesk/BDSKTemplateParser.h  2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKTemplateParser.h  2025-11-21 16:52:53 UTC (rev 29865)
@@ -53,15 +53,18 @@
 Spaces up to a line break before and after a start or end tag are ignored, as 
well as the line break after it. 
 The keys should be valid key paths (i.e. only letters and dots) and spaces are 
not allowed in the tags.
 */
+
+@class BDSKTemplateTag;
+
 @interface BDSKTemplateParser : NSObject
 
 + (NSString *)stringByParsingTemplateString:(NSString *)templateString 
usingObject:(id)object;
-+ (NSArray *)arrayByParsingTemplateString:(NSString *)templateString 
isSubtemplate:(BOOL)isSubtemplate;
-+ (NSString *)stringFromTemplateArray:(NSArray *)templateArray 
usingObject:(id)object atIndex:(NSInteger)anIndex;
++ (NSArray<__kindof BDSKTemplateTag *> 
*)arrayByParsingTemplateString:(NSString *)templateString 
isSubtemplate:(BOOL)isSubtemplate;
++ (NSString *)stringFromTemplateArray:(NSArray<__kindof BDSKTemplateTag *> 
*)templateArray usingObject:(id)object atIndex:(NSInteger)anIndex;
 
 + (NSAttributedString 
*)attributedStringByParsingTemplateAttributedString:(NSAttributedString 
*)templateAttrString usingObject:(id)object;
-+ (NSArray *)arrayByParsingTemplateAttributedString:(NSAttributedString 
*)templateAttrString isSubtemplate:(BOOL)isSubtemplate;
-+ (NSAttributedString *)attributedStringFromTemplateArray:(NSArray 
*)templateArray usingObject:(id)object atIndex:(NSInteger)anIndex;
++ (NSArray<__kindof BDSKTemplateTag *> 
*)arrayByParsingTemplateAttributedString:(NSAttributedString 
*)templateAttrString isSubtemplate:(BOOL)isSubtemplate;
++ (NSAttributedString *)attributedStringFromTemplateArray:(NSArray<__kindof 
BDSKTemplateTag *> *)templateArray usingObject:(id)object 
atIndex:(NSInteger)anIndex;
 
 @end
 

Modified: trunk/bibdesk/BDSKTextImportController.h
===================================================================
--- trunk/bibdesk/BDSKTextImportController.h    2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKTextImportController.h    2025-11-21 16:52:53 UTC (rev 
29865)
@@ -73,8 +73,8 @@
     
        __weak id <BDSKOwner> owner;
     BDSKPublicationsArray *publications;
-       NSMutableArray *itemsAdded;
-    NSMutableArray *fields;
+       NSMutableArray<BibItem *> *itemsAdded;
+    NSMutableArray<NSString *> *fields;
        NSString *webSelection;
     
     NSUndoManager *undoManager;
@@ -133,7 +133,7 @@
 @property (nonatomic, nullable, readonly) BDSKWKWebView *webView;
 
 @property (nonatomic, readonly) BibItem *publication;
-@property (nonatomic, readonly) NSArray *addedPublications;
+@property (nonatomic, readonly) NSArray<BibItem *> *addedPublications;
 
 - (void)beginSheetForURL:(nullable NSURL *)aURL modalForWindow:(NSWindow 
*)aWindow completionHandler:(void (^ _Nullable )(NSInteger result))handler;
 

Modified: trunk/bibdesk/BDSKTouchBarButtonGroup.h
===================================================================
--- trunk/bibdesk/BDSKTouchBarButtonGroup.h     2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKTouchBarButtonGroup.h     2025-11-21 16:52:53 UTC (rev 
29865)
@@ -41,12 +41,12 @@
 NS_ASSUME_NONNULL_BEGIN
 
 @interface BDSKTouchBarButtonGroup : NSViewController {
-    NSArray *buttons;
+    NSArray<NSButton *> *buttons;
 }
 
 @property (nonatomic, readonly) NSArray *buttons;
 
-- (instancetype)initByReferencingButtons:(NSArray *)refButtons 
NS_DESIGNATED_INITIALIZER;
+- (instancetype)initByReferencingButtons:(NSArray<NSButton *> *)refButtons 
NS_DESIGNATED_INITIALIZER;
 
 - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil 
bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
 - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;

Modified: trunk/bibdesk/BDSKTypeInfoEditor.h
===================================================================
--- trunk/bibdesk/BDSKTypeInfoEditor.h  2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKTypeInfoEditor.h  2025-11-21 16:52:53 UTC (rev 29865)
@@ -52,12 +52,12 @@
     NSButton *canEditDefaultTypesButton;
     NSButton *okButton;
     NSButton *cancelButton;
-       NSMutableDictionary *fieldsForTypesDict;
-       NSMutableArray *types;
-       NSMutableArray *currentRequiredFields;
-       NSMutableArray *currentOptionalFields;
-       NSArray *currentDefaultRequiredFields;
-       NSArray *currentDefaultOptionalFields;
+       NSMutableDictionary<NSString *, NSDictionary<NSString *, 
NSMutableArray<NSString *> *> *> *fieldsForTypesDict;
+       NSMutableArray<NSString *> *types;
+       NSMutableArray<NSString *> *currentRequiredFields;
+       NSMutableArray<NSString *> *currentOptionalFields;
+       NSArray<NSString *> *currentDefaultRequiredFields;
+       NSArray<NSString *> *currentDefaultOptionalFields;
        NSString *currentType;
     BOOL canEditDefaultTypes;
 }
@@ -78,8 +78,8 @@
 
 - (void)revertTypes;
 
-- (void)addType:(NSString *)newType withFields:(nullable NSDictionary 
*)fieldsDict;
-- (void)insertType:(NSString *)newType withFields:(nullable NSDictionary 
*)fieldsDict atIndex:(NSUInteger)index;
+- (void)addType:(NSString *)newType withFields:(nullable NSDictionary<NSString 
*, NSArray<NSString *> *> *)fieldsDict;
+- (void)insertType:(NSString *)newType withFields:(nullable 
NSDictionary<NSString *, NSArray<NSString *> *> *)fieldsDict 
atIndex:(NSUInteger)index;
 
 @property (nonatomic, nullable, strong) NSString *currentType;
 

Modified: trunk/bibdesk/BDSKTypeSelectHelper.h
===================================================================
--- trunk/bibdesk/BDSKTypeSelectHelper.h        2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKTypeSelectHelper.h        2025-11-21 16:52:53 UTC (rev 
29865)
@@ -48,7 +48,7 @@
 
 @protocol BDSKTypeSelectDelegate <NSObject>
 
-- (NSArray *)typeSelectHelperSelectionStrings:(BDSKTypeSelectHelper 
*)typeSelectHelper;
+- (NSArray<NSString *> 
*)typeSelectHelperSelectionStrings:(BDSKTypeSelectHelper *)typeSelectHelper;
 - (NSUInteger)typeSelectHelperCurrentlySelectedIndex:(BDSKTypeSelectHelper 
*)typeSelectHelper;
 - (void)typeSelectHelper:(BDSKTypeSelectHelper *)typeSelectHelper 
selectItemAtIndex:(NSUInteger)itemIndex;
 
@@ -65,7 +65,7 @@
     BOOL cycleResults;
     BOOL matchPrefix;
     
-    NSArray *searchCache;
+    NSArray<NSString *> *searchCache;
     NSString *searchString;
     NSTimer *timer;
     BOOL processing;

Modified: trunk/bibdesk/BDSKURLGroupSheetController.h
===================================================================
--- trunk/bibdesk/BDSKURLGroupSheetController.h 2025-11-21 10:14:27 UTC (rev 
29864)
+++ trunk/bibdesk/BDSKURLGroupSheetController.h 2025-11-21 16:52:53 UTC (rev 
29865)
@@ -51,7 +51,6 @@
     NSString *urlString;
     NSUndoManager *undoManager;
     BDSKFieldEditor *dragFieldEditor;
-    CFArrayRef editors;
 }
 
 - (instancetype)initWithURL:(nullable NSURL *)aURL NS_DESIGNATED_INITIALIZER;

Modified: trunk/bibdesk/BDSKWebIconDatabase.h
===================================================================
--- trunk/bibdesk/BDSKWebIconDatabase.h 2025-11-21 10:14:27 UTC (rev 29864)
+++ trunk/bibdesk/BDSKWebIconDatabase.h 2025-11-21 16:52:53 UTC (rev 29865)
@@ -41,11 +41,11 @@
 NS_ASSUME_NONNULL_BEGIN
 
 @interface BDSKWebIconDatabase : NSObject  {
-    NSMutableDictionary *icons;
-    NSMutableDictionary *pages;
-    NSMutableDictionary *recentPageIcons;
-    NSMutableDictionary *recentIcons;
-    NSMutableDictionary *cachedIcons;
+    NSMutableDictionary<NSString *, NSData *> *icons;
+    NSMutableDictionary<NSString *, NSMutableDictionary<NSString *, id> *> 
*pages;
+    NSMutableDictionary<NSString *, NSImage *> *recentPageIcons;
+    NSMutableDictionary<NSString *, NSImage *> *recentIcons;
+    NSMutableDictionary<NSString *, NSImage *> *cachedIcons;
 }
 
 @property (class, nonatomic, readonly) BDSKWebIconDatabase *sharedDatabase;

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to