/*
 *     Generated by class-dump 3.1.2.
 *
 *     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2007 by Steve Nygard.
 */

struct $_463 {
    struct PlaylistItem *_field1;
    struct PlaylistItem *_field2;
    struct OpaqueStringCacheIndex *_field3;
    unsigned int _field4;
    unsigned short _field5;
    unsigned short _field6;
};

struct $_464 {
    struct TrackInfo *_field1;
    unsigned int _field2;
    struct PlaylistItem *_field3;
};

struct AppContext {
    unsigned char _field1;
    unsigned char _field2;
    unsigned char _field3;
    unsigned char _field4;
    unsigned char _field5;
    unsigned char _field6;
    unsigned char _field7;
    unsigned int _field8;
    struct SLinkList _field9;
    unsigned char _field10;
    unsigned int _field11;
    struct DisplayArtistMatchInfo *_field12;
    unsigned int _field13;
    struct SLinkList _field14;
    struct ChunkyAllocator _field15;
    int _field16;
    struct MessageSender _field17;
    struct AudibleUserIDList *_field18;
    struct SLinkList _field19;
    short _field20;
    unsigned char _field21;
    unsigned char _field22;
};

struct Array {
    unsigned int itemSize;
    unsigned int itemCount;
    int dataStored;
    int dataAllocated;
    int lockCount;
    struct MemHandleOpaque *itemsHandle;
    void *compareProc;
    unsigned char keepSorted;
    unsigned char isSorted;
};

struct AudibleUserIDList;

struct ChapterData;

struct ChunkyAllocator {
    unsigned int chunkSize;
    unsigned int chunkDataSize;
    unsigned int numChunks;
    unsigned int numFreeChunks;
    unsigned int numUsedChunks;
    struct SLinkList freeList;
};

struct DLinkElement;

struct DLinkList {
    struct DLinkElement *first;
    struct DLinkElement *last;
};

struct DisplayArtistMatchInfo;

struct ExtendedTrackInfo {
    unsigned int extendedInfoValid:1;
    unsigned int playlistID;
    unsigned int releaseDate;
    struct OpaqueStringCacheIndex *podcastURLStringIndex;
    struct OpaqueStringCacheIndex *descriptionStringIndex;
    struct ChapterData *chapterData;
    struct OpaqueStringCacheIndex *sortFieldStringIndex[5];
};

struct ITCDLocation {
    short driveNum;
    short trackNumber;
    short realTrackNumber;
    struct ITCDPositioning baseTimePosition;
    struct ITCDPositioning endTimePosition;
    unsigned int baseTimeInMS;
    unsigned int numFrames;
};

struct ITCDPositioning {
    unsigned char minute;
    unsigned char second;
    unsigned char frame;
};

struct ITDeviceTrackLocation {
    unsigned int deviceID;
    unsigned int mediaID;
    unsigned int trackID;
};

struct ITImageInfoLookupTable;

struct ITImageLibrary {
    unsigned int _field1;
    unsigned char _field2;
    unsigned char _field3;
    unsigned char _field4;
    unsigned int _field5;
    struct DLinkList _field6;
    unsigned int _field7;
    struct SLinkList _field8;
    unsigned int _field9;
    struct SLinkList _field10;
    unsigned int _field11;
    unsigned int _field12;
    struct OpaqueFixedMemAllocator *_field13;
    struct OpaqueFixedMemAllocator *_field14;
    struct StringCache _field15;
    struct StringCache _field16;
    struct StringCache _field17[20];
    struct JRFileSpec _field18;
    struct JRFileSpec _field19;
    unsigned int _field20;
    unsigned int _field21;
    struct ITImageInfoLookupTable *_field22;
    struct ITImageInfoLookupTable *_field23;
    struct ITImageInfoLookupTable *_field24;
};

struct IntDeviceLocation {
    struct ITDeviceTrackLocation deviceLoc;
    unsigned int fileType;
    unsigned int fileCreator;
};

struct IntFileLocation {
    struct TrackFileSpec trackSpec;
    unsigned char specIsValid;
};

struct IntMemoryFileLocation {
    struct IntFileLocation fileLoc;
    void *buffer;
    unsigned int bufferSize;
};

struct IntRemoteLocation {
    unsigned int remoteTrackID;
    unsigned char isRemoteStream;
    unsigned int codecType;
    unsigned int codecSubType;
};

struct JRFileSpec {
    int volID;
    char path[257];
};

struct MLArtworkFormatSpec {
    unsigned int _field1;
    unsigned int _field2;
    unsigned int _field3;
    unsigned int _field4;
    int _field5;
    int _field6;
};

struct MLArtworkInstanceInfo {
    struct MLArtworkFormatSpec _field1;
    struct _NSRect _field2;
};

struct MemHandleOpaque;

struct MessageReceiver {
    unsigned int magic;
    unsigned int disableCount;
    unsigned int modificationCount;
    struct Array senders;
    void *handlerProc;
    void *handlerData;
};

struct MessageSender {
    unsigned int magic;
    unsigned int disableCount;
    unsigned int sendCount;
    unsigned int modificationCount;
    struct Array receivers;
};

struct OpaqueFixedMemAllocator;

struct OpaqueSearchCriteriaList;

struct OpaqueStringCacheIndex;

struct PermFileLocation {
    struct StringCache *permLocationCache;
    struct OpaqueStringCacheIndex *permLocationCacheIndex;
    unsigned int fileType;
    unsigned int fileCreator;
    struct StringCache *urlStringCache;
    struct OpaqueStringCacheIndex *urlStringCacheIndex;
    short numFileDirLevels;
    short numLibDirLevels;
};

struct PermHTTPLocation {
    struct StringCache *permLocationCache;
    struct OpaqueStringCacheIndex *urlStringCacheIndex;
    struct OpaqueStringCacheIndex *externalURLStringCacheIndex;
    struct OpaqueStringCacheIndex *productStringIndex;
    struct OpaqueStringCacheIndex *priceStringIndex;
};

struct PermRemoteLocation {
    struct StringCache *permLocationCache;
    struct OpaqueStringCacheIndex *urlStringCacheIndex;
};

struct Playlist {
    struct SLinkElement _field1;
    unsigned int _field2;
    struct AppContext *_field3;
    struct TrackData *_field4;
    unsigned int _field5;
    unsigned long long _field6;
    unsigned int _field7;
    struct OpaqueFixedMemAllocator *_field8;
    struct PlaylistItem *_field9;
    struct PlaylistItem *_field10;
    struct MessageSender _field11;
    struct MessageReceiver _field12;
    unsigned long long _field13;
    unsigned long long _field14;
    unsigned int _field15;
    struct StringCache _field16;
    struct OpaqueStringCacheIndex *_field17;
    unsigned short _field18;
    unsigned short _field19;
    unsigned int _field20;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    struct __CFString *_field21;
    void *_field22;
    void *_field23;
    unsigned int _field24;
    unsigned int _field25;
    unsigned int _field26;
    unsigned short _field27;
    unsigned int _field28;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned char _field29;
    unsigned char _field30;
    struct SmartPlaylistOptions _field31;
    unsigned long long _field32;
    struct MessageReceiver _field33;
    unsigned int :1;
    unsigned int _field34;
    unsigned int _field35;
    struct PlaylistItemLookupTable *_field36[48];
    struct PlaylistIndexLookupTable *_field37[48];
    struct PlaylistItemLookupTable *_field38[48];
    struct PlaylistIndexLookupTable *_field39[48];
    struct PlaylistItemLookupTable *_field40;
    struct PlaylistItemLookupTable *_field41;
    struct PlaylistItemLookupTable *_field42;
    struct PlaylistItemLookupTable *_field43;
    struct PlaylistNavTable *_field44[48];
    struct PlaylistPermissions _field45;
};

struct PlaylistIndexLookupTable;

struct PlaylistItem {
    struct Playlist *_field1;
    struct PlaylistItem *_field2;
    struct PlaylistItem *_field3;
    struct PlaylistItem *_field4;
    unsigned int _field5;
    unsigned int _field6;
    unsigned char _field7;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    union $_462 _field8;
};

struct PlaylistItemLookupTable;

struct PlaylistNavEntry {
    unsigned short _field1;
    unsigned int _field2;
};

struct PlaylistNavTable {
    unsigned int _field1;
    struct PlaylistNavEntry _field2[1];
};

struct PlaylistPermissions {
    unsigned long long modifiableFields;
    unsigned int allowRename:1;
    unsigned int allowDelete:1;
    unsigned int allowChangeSortOrder:1;
    unsigned int allowAddInternalItems:1;
    unsigned int allowAddExternalItems:1;
    unsigned int onlyAddExternalItemsToLibrary:1;
    unsigned int allowDeleteItems:1;
    unsigned int allowDeleteLibraryItems:1;
    unsigned int allowCopyItems:1;
    unsigned int allowReorderItems:1;
};

struct PurpleEngineContext;

struct SLinkElement {
    struct SLinkElement *next;
};

struct SLinkList {
    struct SLinkElement *head;
};

struct SmartPlaylistOptions {
    unsigned char isDynamic;
    unsigned char isLimited;
    unsigned char isFiltered;
    unsigned char enabledSongsOnly;
    struct OpaqueSearchCriteriaList *contentFilter;
    unsigned int limitValue;
    unsigned char limitKind;
    unsigned int limitOrder;
    unsigned char reverseLimitOrder;
};

struct StringCache {
    unsigned int options;
    struct StringOffset **stringOffsets;
    struct StringRefcount **stringRefcounts;
    char **stringData;
    int numOffsets;
    int firstFreeOffset;
    int extraStringData;
    unsigned int dataChunkSize;
    int lockCount;
    unsigned int deletedBytes;
};

struct StringOffset;

struct StringRefcount;

struct TrackData {
    struct SLinkElement _field1;
    unsigned int _field2;
    struct AppContext *_field3;
    unsigned int _field4;
    unsigned int _field5;
    unsigned int _field6;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int _field7;
    struct TrackInfo *_field8;
    struct TrackInfo *_field9;
    unsigned int _field10;
    struct SLinkList _field11;
    struct Playlist *_field12;
    unsigned short _field13;
    unsigned char _field14;
    struct OpaqueFixedMemAllocator *_field15;
    struct OpaqueFixedMemAllocator *_field16;
    struct OpaqueFixedMemAllocator *_field17;
    void *_field18;
    void *_field19;
    struct MessageSender _field20;
    struct MessageReceiver _field21;
    struct StringCache _field22;
    struct StringCache _field23;
    struct StringCache _field24;
    struct StringCache _field25;
    struct StringCache _field26;
    struct StringCache _field27;
    struct StringCache _field28;
    struct StringCache _field29;
    struct StringCache _field30;
    struct StringCache _field31[10];
    struct StringCache _field32;
    struct StringCache _field33;
    struct StringCache _field34;
    struct StringCache _field35;
    struct StringCache _field36;
    struct StringCache _field37;
    struct StringCache _field38;
    struct StringCache _field39;
    struct StringCache _field40;
    struct TrackInfoLookupTable *_field41;
    unsigned char _field42;
    unsigned char _field43;
    unsigned char _field44;
    short _field45;
    short _field46;
    struct ExtendedTrackInfo _field47;
    struct VideoTrackInfo _field48;
};

struct TrackFileSpec {
    char path[36];
    unsigned char musicPath;
};

struct TrackInfo {
    struct TrackData *_field1;
    struct TrackInfo *_field2;
    struct TrackInfo *_field3;
    struct ExtendedTrackInfo *_field4;
    struct VideoTrackInfo *_field5;
    unsigned int _field6;
    unsigned char _field7;
    unsigned char _field8;
    unsigned int _field9;
    unsigned int _field10;
    unsigned int _field11;
    struct PlaylistItem *_field12;
    struct OpaqueStringCacheIndex *_field13;
    struct OpaqueStringCacheIndex *_field14;
    struct OpaqueStringCacheIndex *_field15;
    struct OpaqueStringCacheIndex *_field16;
    struct OpaqueStringCacheIndex *_field17;
    struct OpaqueStringCacheIndex *_field18;
    struct OpaqueStringCacheIndex *_field19;
    struct OpaqueStringCacheIndex *_field20;
    struct OpaqueStringCacheIndex *_field21;
    struct OpaqueStringCacheIndex *_field22;
    struct OpaqueStringCacheIndex *_field23;
    unsigned short _field24;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :2;
    unsigned int :2;
    unsigned int :2;
    unsigned int :2;
    unsigned int _field25;
    unsigned int _field26;
    unsigned int _field27;
    unsigned int _field28;
    unsigned int _field29;
    unsigned int _field30;
    unsigned int _field31;
    float _field32;
    unsigned short _field33;
    short _field34;
    short _field35;
    char _field36;
    char _field37;
    unsigned short _field38;
    unsigned short _field39;
    unsigned short _field40;
    unsigned short _field41;
    unsigned short _field42;
    unsigned short _field43;
    unsigned short _field44;
    unsigned char _field45;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int :1;
    unsigned int _field46;
    unsigned int _field47;
    unsigned int _field48;
    unsigned int _field49;
    unsigned int _field50;
    unsigned int _field51;
    unsigned int _field52;
    unsigned int _field53;
    unsigned int _field54;
    unsigned int _field55;
    unsigned int _field56;
    unsigned short _field57;
    unsigned short _field58;
    union IntTrackLocation _field59;
    union PermTrackLocation _field60;
    unsigned int _field61;
    unsigned int _field62;
    unsigned int _field63;
    unsigned long long _field64;
    unsigned long long _field65;
    unsigned long long _field66;
    struct TrackInfoUCSortKeyData *_field67;
};

struct TrackInfoLookupTable;

struct TrackInfoUCSortKeyData;

struct TrackOrderInfo {
    unsigned long long _field1;
    unsigned char _field2;
};

struct VideoTrackInfo {
    unsigned int videoInfoValid:1;
    unsigned int hasAlternateAudio:1;
    unsigned int hasSubtitles:1;
    unsigned int episodeSortID;
    unsigned int seasonNumber;
    unsigned int demoRental:1;
    unsigned int rentalExpirationDate;
    unsigned int audioTrackID;
    unsigned int subtitleTrackID;
    struct OpaqueStringCacheIndex *seriesNameStringIndex;
    struct OpaqueStringCacheIndex *episodeNumberStringIndex;
    struct OpaqueStringCacheIndex *extendedContentRatingStringIndex;
};

struct _MLCompoundPredicateStruct {
    unsigned int mediaType;
    id title;
    id artist;
    id album;
    id genre;
    id composerName;
    id seriesDisplayName;
    id seasonDisplayName;
    id podcastName;
    id playlistName;
    unsigned int uniqueID;
    unsigned long long persistentUID;
    unsigned int includeInShuffle:1;
    unsigned int isCompilation:1;
    unsigned int uniqueIDIsForPlaylist:1;
    unsigned int isNotDeleted:1;
    unsigned int isAudibleAudioBook:1;
    unsigned int isRental:1;
    unsigned int shouldFilter_isAudibleAudioBook:1;
    unsigned int shouldFilter_isRental:1;
};

struct _MLTrackOrderInfo {
    struct TrackOrderInfo _field1;
};

struct _NSPoint {
    float _field1;
    float _field2;
};

struct _NSRange {
    unsigned int _field1;
    unsigned int _field2;
};

struct _NSRect {
    struct _NSPoint _field1;
    struct _NSSize _field2;
};

struct _NSSize {
    float _field1;
    float _field2;
};

struct _NSZone;

struct __CFArray;

struct __CFDictionary;

struct __CFSet;

struct __CFString;

struct __MLDTracksQueryResults {
    unsigned int _field1;
    struct __CFArray *_field2;
    char _field3;
    char _field4;
    struct __CFDictionary *_field5;
    unsigned int _field6;
};

struct __MLPrefixOccurrenceInfo {
    unsigned int _field1;
    id _field2;
    unsigned int _field3;
};

struct __TestPredicateNode {
    void *_field1;
    void *_field2;
    struct __TestPredicateNode *_field3;
};

union $_139 {
    NSString *stringValue;
    unsigned long long unsignedValue;
};

union $_462 {
    struct $_463 _field1;
    struct $_464 _field2;
};

union IntTrackLocation {
    struct IntFileLocation file;
    struct IntMemoryFileLocation memoryFile;
    struct ITCDLocation cd;
    struct IntDeviceLocation device;
    struct IntRemoteLocation remote;
};

union PermTrackLocation {
    struct PermFileLocation file;
    struct PermHTTPLocation http;
    struct PermRemoteLocation remote;
};

/*
 * File: /Users/natetrue/shared/114/System/Library/Frameworks/MusicLibrary.framework/MusicLibrary
 *       Current version: 18.0.0, Compatibility version: 1.0.0
 */

@protocol NSCoding
- (void)encodeWithCoder:(id)fp8;
- (id)initWithCoder:(id)fp8;
@end

@protocol NSCopying
- (id)copyWithZone:(struct _NSZone *)fp8;
@end

@interface MLQueryImpl : NSObject
{
    MLQuery *_query;
    struct __CFArray *_queryResults;
    unsigned int _countOfUniqueItemsByGroupingProperty;
    unsigned int _trackGroupMembers:1;
    struct __CFDictionary *_groupMembers;
    unsigned int _orderingIsSorted:1;
    unsigned int _wasSortedAlphabetically:1;
    unsigned int _registeredAsCachedQuery:1;
}

+ (id)findCachedQueryImplMatchingCriteriaOfQuery:(id)fp8;
+ (void)registerQueryImpl:(id)fp8 forCriteriaOfQuery:(id)fp12;
+ (void)reset;
+ (void)resetAndInvalidate:(id)fp8;
+ (void)resetAndInvalidate;
+ (id)recursiveEvaluationLock;
- (void)freeQueryResults;
- (id)copyQueryResultsDescription;
- (id)shallowDebugDescription;
- (id)description;
- (void)dealloc;
- (void)evaluate;
- (void)evaluateQuery:(id)fp8;
- (BOOL)orderingIsSorted;
- (BOOL)wasSortedAlphabetically;
- (unsigned int)countOfEntities;
- (id)entityAtIndex:(unsigned int)fp8;
- (unsigned int)indexOfEntity:(id)fp8;
- (unsigned int)indexOfFirstEntityMatchingPredicates:(id)fp8;
- (unsigned int)indexOfFirstEntityMatchingPredicate:(id)fp8;
- (BOOL)entityMatchesPredicates:(id)fp8 entityIndex:(unsigned int)fp12;
- (BOOL)entityMatchesPredicate:(id)fp8 entityIndex:(unsigned int)fp12;
- (int)entityTypeOfEntityAtIndex:(unsigned int)fp8;
- (id)stringValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (unsigned short)firstCharacterForStringProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (unsigned long long)unsignedValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (double)timeValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (unsigned int)countOfEntitiesGroupedByEntityAtIndex:(unsigned int)fp8;
- (id)representativeTrackForEntityAtIndex:(unsigned int)fp8;
- (id)containingPlaylist;
- (unsigned short)bucketCharForCharacter:(unsigned short)fp8;
- (struct __CFArray *)bucketizedInfoByFirstCharacterForStringProperty:(unsigned long)fp8;
- (id)bucketizedInfoByGroupingStringProperty:(unsigned long)fp8;

@end

@interface MLQuery : NSObject <NSCopying>
{
    MLQueryImpl *_queryImpl;
    MLCompoundPredicate *_cpred;
    NSMutableArray *_filterPredicates;
    unsigned int _groupingProperty;
    unsigned int _customSortingProperty;
    void *_cachedPrefixOccurrenceInfo;
    unsigned int *_indexMapping;
    unsigned int _numberOfEntities;
    unsigned int _groupingThreshold;
    unsigned int _indexMappingIsShort:1;
    unsigned int _needsEvaluation:1;
    unsigned int _disableAutoInvalidatesForDatabaseChanges:1;
    unsigned int _filterChanged:1;
    unsigned int _groupingChanged:1;
    unsigned int _entityType:2;
    unsigned int _effectiveEntityType:2;
    unsigned int _entityOrderType:4;
    unsigned int _unshuffledEntityOrder:4;
    unsigned int _lastGroupTrackSearchUID;
    unsigned int _lastGroupTrackSearchMatchIndex;
}

- (id)init;
- (id)indexMappingDescription;
- (id)description;
- (void)dealloc;
- (void)_filterPredicatesChanged;
- (void)filterByAppendingPredicate:(id)fp8;
- (void)replaceFirstFilterForProperty:(unsigned long)fp8 withPredicate:(id)fp12;
- (void)setFilterPredicates:(id)fp8;
- (id)filterPredicates;
- (id)_cpred;
- (id)stringValueForPredicateFilterProperty:(unsigned long)fp8;
- (unsigned long long)unsignedValueForPredicateFilterProperty:(unsigned long)fp8;
- (BOOL)isFilteredByAnyPropertyExcluding:(unsigned int *)fp8 count:(int)fp12;
- (void)setGroupingProperty:(unsigned long)fp8;
- (unsigned long)groupingProperty;
- (void)setGroupingThreshold:(unsigned int)fp8;
- (unsigned int)groupingThreshold;
- (void)setEntityType:(int)fp8;
- (int)entityType;
- (int)effectiveEntityType;
- (void)setEntityOrder:(int)fp8;
- (int)entityOrder;
- (BOOL)wasSortedAlphabetically;
- (void)setCustomEntitySortOrderProperty:(unsigned long)fp8;
- (unsigned long)customEntitySortOrderProperty;
- (void)_debugLogAllEntitiesWithMessage:(id)fp8;
- (void)_noteIndexMappingTypeForEntityCount:(unsigned int)fp8 oldEntityCount:(unsigned int)fp12 anchorIndex:(unsigned int *)fp16 currentIndex:(unsigned int *)fp20;
- (unsigned int)shuffleTrackOrderWithAnchorIndex:(unsigned int)fp8;
- (unsigned int)shuffleTrackOrderWithAnchorIndex:(unsigned int)fp8 currentIndex:(unsigned int *)fp12;
- (unsigned int)shuffleTrackOrderByAlbumWithAnchorIndex:(unsigned int)fp8;
- (void)_evaluateIfNecessary;
- (void)setAutoInvalidatesForDatabaseChanges:(BOOL)fp8;
- (void)allImplContentsInvalidated:(id)fp8;
- (unsigned int)countOfEntities;
- (id)_queryImpl;
- (unsigned int)_queryImplEntityIndexForQueryIndex:(unsigned int)fp8;
- (id)entityAtIndex:(unsigned int)fp8;
- (unsigned int)indexOfEntity:(id)fp8;
- (unsigned int)indexOfFirstEntityMatchingPredicates:(id)fp8;
- (unsigned int)indexOfFirstEntityMatchingPredicate:(id)fp8;
- (unsigned int)indexOfFirstGroupContainingTrack:(id)fp8;
- (BOOL)entityMatchesPredicates:(id)fp8 entityIndex:(unsigned int)fp12;
- (BOOL)entityMatchesPredicate:(id)fp8 entityIndex:(unsigned int)fp12;
- (void)markTrackAsDeleted:(id)fp8;
- (int)entityTypeOfEntityAtIndex:(unsigned int)fp8;
- (id)stringValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (id)stringValuesForProperty:(unsigned long)fp8 ofEntitiesInRange:(struct _NSRange)fp12;
- (id)firstFrequentLongPrefixForStringProperty:(unsigned long)fp8 occurrenceCount:(unsigned int *)fp12;
- (unsigned long long)unsignedValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (double)timeValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (unsigned int)countOfEntitiesGroupedByEntityAtIndex:(unsigned int)fp8;
- (id)representativeTrackForEntityAtIndex:(unsigned int)fp8;
- (id)containingPlaylist;
- (id)copyWithZone:(struct _NSZone *)fp8;
- (BOOL)isEqual:(id)fp8 compareUnshuffledEquivalence:(BOOL)fp12;
- (unsigned int)hash;
- (BOOL)isEqual:(id)fp8;
- (unsigned int)querySearchCriteriaHash;
- (BOOL)querySearchCriteriaIsEqualTo:(id)fp8;

@end

@interface MLQuery (Internal)
- (void)_calculateFirstFrequentLongPrefixInfo:(struct __MLPrefixOccurrenceInfo *)fp8;
@end

@interface MLQuery (MLEntityBucketization)
- (struct __CFArray *)bucketizedInfoByFirstCharacterForStringProperty:(unsigned long)fp8;
- (id)bucketizedInfoByGroupingStringProperty:(unsigned long)fp8;
@end

@interface MLPredicate : NSObject <NSCoding>
{
    unsigned int _property;
    unsigned int _valueType;
    union $_139 _value;
}

+ (void)initialize;
+ (id)predicateForProperty:(unsigned long)fp8 stringValue:(id)fp12;
+ (id)predicateForProperty:(unsigned long)fp8 unsignedValue:(unsigned long long)fp12;
+ (id)predicateForProperty:(unsigned long)fp8 withValueFromTrack:(id)fp12;
+ (id)predicateForProperty:(unsigned long)fp8 withValueFromEntityAtIndex:(unsigned int)fp12 query:(id)fp16;
- (void)dealloc;
- (id)description;
- (void)encodeWithCoder:(id)fp8;
- (id)initWithCoder:(id)fp8;
- (unsigned long)property;
- (unsigned long)propertyValueType;
- (id)propertyStringValue;
- (unsigned long long)propertyUnsignedValue;

@end

@interface MLCompoundPredicate : NSObject
{
    struct _MLCompoundPredicateStruct _cpred;
}

+ (struct _MLCompoundPredicateStruct)_computeCompoundPredicateStructFromPredicates:(id)fp8 retainedFields:(BOOL)fp12;
+ (struct _MLCompoundPredicateStruct)_computeCompoundPredicateStructFromQuery:(id)fp8 retainedFields:(BOOL)fp12;
+ (BOOL)predicateAllowsUnknownItems:(struct _MLCompoundPredicateStruct)fp8;
- (id)initFromQuery:(id)fp8;
- (void)dealloc;
- (struct _MLCompoundPredicateStruct *)cpredStructPtr;
- (unsigned int)hash;
- (BOOL)isEqual:(id)fp8 compareUnshuffledEquivalence:(BOOL)fp12;
- (BOOL)isEqual:(id)fp8;
- (void *)_valueForProperty:(unsigned long)fp8;
- (id)stringValueForProperty:(unsigned long)fp8;
- (unsigned long long)unsignedValueForProperty:(unsigned long)fp8;

@end

@interface NSString (MLAdditions)
+ (unsigned short)localizedCanonicalBucketCharacterCharacter:(unsigned short)fp8;
- (id)commonNonWordBreakingPrefixWithString:(id)fp8 options:(unsigned int)fp12;
@end

@interface NSString (MusicArtistComparison)
- (struct _NSRange)rangeWithoutInsignificantPrefix;
- (id)copyAsStringWithoutInsignificantPrefix;
- (int)compareIgnoringInsignificantPrefix:(id)fp8;
@end

@interface MLPlaylist : NSObject
{
}

+ (id)activeOnTheGoPlaylist;
- (BOOL)isPhysicalPlaylist;
- (BOOL)isPurchasedItemsPlaylist;
- (BOOL)isMainPurchasedItemsPlaylist;
- (BOOL)isAlbum;
- (id)representativeAlbumTrack;
- (id)name;
- (unsigned long long)persistentUID;
- (unsigned long)uniqueID;
- (BOOL)isUserEditable;
- (void)moveTracksFromRange:(struct _NSRange)fp8 toIndex:(unsigned int)fp16;
- (void)insertTrackFromQuery:(id)fp8 entityIndex:(unsigned int)fp12 atIndex:(unsigned int)fp16;
- (void)insertTracksFromQuery:(id)fp8 entityIndexes:(id)fp12 atIndex:(unsigned int)fp16;
- (void)insertTracks:(id)fp8 atIndex:(unsigned int)fp12;
- (void)removeTracksInRange:(struct _NSRange)fp8;
- (void)saveToFile;
- (unsigned int)countOfTracks;

@end

@interface MLPlaylistRep : MLPlaylist
{
    unsigned int _isAlbum:1;
    unsigned int _albumGroupingProperty;
    void *_dulcPtr;
    MLQuery *_albumTracksQuery;
}

+ (id)playlistRepWithPlaylistPtr:(struct Playlist *)fp8;
+ (id)playlistRepWithGroupPlaylistItemPtr:(struct PlaylistItem *)fp8 groupingProperty:(unsigned long)fp12 query:(id)fp16;
- (unsigned int)countOfTracks;
- (void)dealloc;
- (BOOL)isEqual:(id)fp8;
- (unsigned int)hash;
- (BOOL)isPhysicalPlaylist;
- (BOOL)isPurchasedItemsPlaylist;
- (BOOL)isMainPurchasedItemsPlaylist;
- (id)name;
- (unsigned long long)persistentUID;
- (unsigned long)uniqueID;
- (BOOL)isAlbum;
- (id)representativeAlbumTrack;
- (BOOL)_isActiveOnTheGoPlaylist;
- (BOOL)_isMutableUserVisiblePlaylist;
- (BOOL)isUserEditable;
- (void)moveTracksFromRange:(struct _NSRange)fp8 toIndex:(unsigned int)fp16;
- (void)insertTrackFromQuery:(id)fp8 entityIndex:(unsigned int)fp12 atIndex:(unsigned int)fp16;
- (void)insertTracksFromQuery:(id)fp8 entityIndexes:(id)fp12 atIndex:(unsigned int)fp16;
- (void)insertTracks:(id)fp8 atIndex:(unsigned int)fp12;
- (void)removeTracksInRange:(struct _NSRange)fp8;
- (void)saveToFile;

@end

@interface MLTrack : NSObject
{
    void *_trackDulcRep;
}

- (id)initWithTrackInfoContext:(void *)fp8;
- (id)description;
- (void)dealloc;
- (id)stringValueForProperty:(unsigned long)fp8;
- (unsigned long long)unsignedValueForProperty:(unsigned long)fp8;
- (double)timeValueForProperty:(unsigned long)fp8;
- (unsigned long)number;
- (unsigned long long)persistentUID;
- (unsigned long)uniqueID;
- (unsigned long)audibleDRMGroupID;
- (id)path;
- (id)title;
- (id)artist;
- (id)albumArtist;
- (id)album;
- (id)composer;
- (id)genre;
- (id)category;
- (BOOL)isCompilationTrack;
- (BOOL)isExcludedFromShuffle;
- (BOOL)isRental;
- (BOOL)isDemoRental;
- (double)demoRentalExpirationDate;
- (id)seriesDisplayName;
- (id)seasonDisplayName;
- (id)podcastName;
- (id)audioBookName;
- (id)infoDescription;
- (id)comments;
- (id)contentRatingInfo;
- (id)eqPreset;
- (float)volumeAdjustment;
- (float)volumeNormalization;
- (unsigned int)seasonNumber;
- (unsigned int)episodeNumber;
- (double)releaseDate;
- (int)duration;
- (int)durationInMS;
- (int)startTimeInMS;
- (int)stopTimeInMS;
- (id)chapterTOC;
- (BOOL)hasLyrics;
- (BOOL)hasVideoData;
- (BOOL)rating;
- (void)setRating:(BOOL)fp8;
- (BOOL)videoHasAlternateAudio;
- (BOOL)videoHasSubtitles;
- (unsigned int)videoAudioTrackID;
- (void)setVideoAudioTrackID:(unsigned int)fp8;
- (unsigned int)videoSubtitleTrackID;
- (void)setVideoSubtitleTrackID:(unsigned int)fp8;
- (void)gaplessHeuristicInfo:(unsigned int *)fp8 duration:(unsigned int *)fp12 lastPacketsResync:(unsigned int *)fp16 encodingDelay:(unsigned int *)fp20 encodingDrain:(unsigned int *)fp24;
- (BOOL)hasImageData;
- (id)bestImageDataForSize:(struct _NSSize)fp8;
- (id)bestImageDataForSize:(struct _NSSize)fp8 timeInMS:(unsigned int)fp16 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp20;
- (id)imageDataForArtworkFormatID:(unsigned int)fp8 timeInMS:(unsigned int)fp12 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp16;
- (id)availableArtworkFormatIDsForTimeInMS:(unsigned int)fp8;
- (BOOL)hasNominalAmountBeenPlayed;
- (double)nominalHasBeenPlayedThresholdInSeconds;
- (void)markNominalAmountHasBeenPlayed;
- (BOOL)markHasBeenSkippedIfNecessaryForPlayedDuration:(double)fp8;
- (unsigned int)skipCount;
- (void)incrementPlayCount;
- (unsigned int)playCount;
- (BOOL)markAsDeleted;
- (BOOL)isHidden;
- (BOOL)markHidden:(BOOL)fp8;
- (BOOL)shouldBookmarkLastPlayedTime;
- (BOOL)hasLastPlayedBookmarkTime;
- (void)clearLastPlayedBookmarkTime;
- (void)setLastPlayedBookmarkTimeInSeconds:(double)fp8;
- (double)lastPlayedBookmarkTimeInSeconds;
- (unsigned long)mediaType;

@end

@interface MLTrackRep : MLTrack
{
    NSString *_title;
    unsigned int _imageHeight;
    unsigned int _imageWidth;
    MLChapterTOC *_chapterTOC;
}

+ (id)trackWithPlaylistItemPtr:(struct PlaylistItem *)fp8;
- (struct PlaylistItem *)playlistItemPtr;
- (struct TrackInfo *)trackInfoPtr;
- (id)initWithTrackInfoContext:(void *)fp8;
- (void)dealloc;
- (int)number;
- (unsigned long long)persistentUID;
- (unsigned long)audibleDRMGroupID;
- (unsigned long)uniqueID;
- (BOOL)isCompilationTrack;
- (BOOL)isExcludedFromShuffle;
- (BOOL)isRental;
- (BOOL)isDemoRental;
- (double)demoRentalExpirationDate;
- (id)path;
- (id)title;
- (id)artist;
- (id)albumArtist;
- (id)album;
- (id)composer;
- (id)genre;
- (id)category;
- (id)eqPreset;
- (float)volumeAdjustment;
- (float)volumeNormalization;
- (id)seriesDisplayName;
- (id)seasonDisplayName;
- (id)podcastName;
- (id)infoDescription;
- (id)comments;
- (id)contentRatingInfo;
- (unsigned int)seasonNumber;
- (unsigned int)episodeNumber;
- (double)releaseDate;
- (int)duration;
- (int)durationInMS;
- (int)startTimeInMS;
- (int)stopTimeInMS;
- (void)gaplessHeuristicInfo:(unsigned int *)fp8 duration:(unsigned int *)fp12 lastPacketsResync:(unsigned int *)fp16 encodingDelay:(unsigned int *)fp20 encodingDrain:(unsigned int *)fp24;
- (id)chapterTOC;
- (BOOL)hasLyrics;
- (BOOL)hasVideoData;
- (BOOL)videoHasAlternateAudio;
- (BOOL)videoHasSubtitles;
- (unsigned int)videoAudioTrackID;
- (unsigned int)videoSubtitleTrackID;
- (void)setVideoAudioTrackID:(unsigned int)fp8;
- (void)setVideoSubtitleTrackID:(unsigned int)fp8;
- (BOOL)rating;
- (void)setRating:(BOOL)fp8;
- (BOOL)hasImageData;
- (id)_getImageWithArtworkFormatID:(unsigned int)fp8 size:(struct _NSSize)fp12 timeInMS:(unsigned int)fp20 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp24;
- (id)imageDataForArtworkFormatID:(unsigned int)fp8 timeInMS:(unsigned int)fp12 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp16;
- (id)bestImageDataForSize:(struct _NSSize)fp8 timeInMS:(unsigned int)fp16 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp20;
- (id)availableArtworkFormatIDsForTimeInMS:(unsigned int)fp8;
- (BOOL)hasNominalAmountBeenPlayed;
- (double)nominalHasBeenPlayedThresholdInSeconds;
- (void)markNominalAmountHasBeenPlayed;
- (BOOL)markHasBeenSkippedIfNecessaryForPlayedDuration:(double)fp8;
- (unsigned int)skipCount;
- (void)incrementPlayCount;
- (unsigned int)playCount;
- (BOOL)isHidden;
- (BOOL)markHidden:(BOOL)fp8;
- (BOOL)markAsDeleted;
- (BOOL)shouldBookmarkLastPlayedTime;
- (BOOL)hasLastPlayedBookmarkTime;
- (void)_setLastPlayedBookmarkTimeInSeconds:(double)fp8;
- (void)clearLastPlayedBookmarkTime;
- (void)setLastPlayedBookmarkTimeInSeconds:(double)fp8;
- (double)lastPlayedBookmarkTimeInSeconds;
- (unsigned long)mediaType;
- (BOOL)isEqual:(id)fp8;

@end

@interface MusicLibrary : NSObject
{
    void *_bridge;
}

+ (void)initialize;
+ (Class)sharedMusicLibraryClass;
+ (id)dbModDate;
+ (void)noteDBSyncIsActive;
+ (BOOL)isDBSyncActive;
+ (void)dbSyncWillBegin;
+ (void)dbSyncDidEnd;
+ (BOOL)hasContent;
+ (void)_dumpDebuggingInfo;
+ (void)dumpDebuggingInfo;
+ (id)sharedMusicLibrary;
+ (BOOL)sharedMusicLibraryExists;
+ (BOOL)updatePurchasedContent;
+ (void)resetLibrary;
+ (void)jetsamMemory;
+ (BOOL)flush;
+ (void)disableFlush;
+ (void)enableFlush;
+ (BOOL)isFlushEnabled;
- (id)initWithPath:(id)fp8;
- (void)_dumpDebuggingInfoAfterInit;
- (void)_dumpDebuggingInfo;
- (BOOL)flush;
- (BOOL)markAndDeleteTracks:(id)fp8;
- (BOOL)markHiddenTracks:(id)fp8 hidden:(BOOL)fp12;
- (void)unloadArtwork;
- (void)loadArtwork;
- (struct MLArtworkFormatSpec)formatSpecForArtworkFormatID:(unsigned int)fp8;
- (BOOL)hasAnyVideos;
- (BOOL)hasPodcasts;
- (BOOL)hasAudibleAudioBooks;
- (BOOL)hasAudioBooks;
- (BOOL)hasCompilations;
- (BOOL)hasComposers;
- (BOOL)hasAlbums;
- (BOOL)hasGenres;
- (unsigned int)countOfAllVideoTracks;
- (unsigned int)countOfAllAudioTracks;
- (id)preferredAudioTracks;
- (id)preferredSubtitleTracks;
- (id)activeOnTheGoPlaylist;
- (void)debugLogPerfStatistics;

@end

@interface _MLMixedResultsQueryImpl : _MLTrackQueryImpl
{
}

- (id)init;
- (int)entityTypeOfEntityAtIndex:(unsigned int)fp8;

@end

@interface _MLTrackQueryImpl : _MLPlaylistItemPtrImpl
{
    unsigned int _mixedResultsAllowed:1;
    unsigned int _resultsAreMixedWithGroups:1;
    unsigned int _isFromPodcast:1;
}

- (id)stringValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (unsigned long long)unsignedValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (double)timeValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (void)_unregisterForNotificationsAffectingEvaluationResults;
- (void)playlistContentsDidChangeNotification:(id)fp8;
- (void)_registerForNotificationsAffectingEvaluationResults:(struct Playlist *)fp8;
- (void)evaluate;
- (unsigned short)firstCharacterForStringProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (unsigned int)countOfEntitiesGroupedByEntityAtIndex:(unsigned int)fp8;
- (id)representativeTrackForEntityAtIndex:(unsigned int)fp8;
- (id)containingPlaylist;
- (id)entityAtIndex:(unsigned int)fp8;
- (unsigned int)indexOfEntity:(id)fp8;
- (unsigned int)indexOfFirstEntityMatchingPredicates:(id)fp8;
- (BOOL)entityMatchesPredicates:(id)fp8 entityIndex:(unsigned int)fp12;
- (struct __CFArray *)_getPlaylistItemResults;

@end

@interface _MLPlaylistItemPtrImpl : _MLDulcimerQueryImpl
{
    struct Playlist *_evaluatedDulcPlaylistPtr;
    unsigned int _evaluatedTrackOrder;
}

- (void)freeQueryResults;
- (struct __CFArray *)_calculateBucketizedInfoWithPlaylistPtr:(struct Playlist *)fp8 dulcNavTable:(struct PlaylistNavTable *)fp12 trackOrder:(unsigned long)fp16;
- (BOOL)_canUseDulcNavTableForStringProperty:(unsigned long)fp8 evaluatedTrackOrder:(unsigned long)fp12;
- (struct __CFArray *)bucketizedInfoByFirstCharacterForStringProperty:(unsigned long)fp8;

@end

@interface _MLPlaylistQueryImpl : _MLDulcimerQueryImpl
{
}

- (id)stringValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (unsigned long long)unsignedValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (void)_unregisterForNotificationsAffectingEvaluationResults;
- (void)playlistAddedToLibraryNotification;
- (void)_registerForNotificationsAffectingEvaluationResults;
- (void)evaluate;
- (id)representativeTrackForEntityAtIndex:(unsigned int)fp8;
- (id)entityAtIndex:(unsigned int)fp8;
- (unsigned int)indexOfFirstEntityMatchingPredicates:(id)fp8;
- (BOOL)entityMatchesPredicates:(id)fp8 entityIndex:(unsigned int)fp12;
- (unsigned short)firstCharacterForStringProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (id)containingPlaylist;

@end

@interface _MLGroupQueryImpl : _MLPlaylistItemPtrImpl
{
    unsigned int _isFromPodcast:1;
}

- (id)copyQueryResultsDescription;
- (id)stringValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (unsigned short)firstCharacterForStringProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (unsigned long long)unsignedValueForProperty:(unsigned long)fp8 ofEntityAtIndex:(unsigned int)fp12;
- (void)evaluate;
- (unsigned int)indexOfFirstEntityMatchingPredicates:(id)fp8;
- (BOOL)entityMatchesPredicates:(id)fp8 entityIndex:(unsigned int)fp12;
- (unsigned int)countOfEntitiesGroupedByEntityAtIndex:(unsigned int)fp8;
- (id)representativeTrackForEntityAtIndex:(unsigned int)fp8;
- (id)containingPlaylist;
- (struct __CFArray *)_getPlaylistItemResults;

@end

@interface _MLDulcimerQueryImpl : MLQueryImpl
{
}

- (struct __CFArray *)_groupMembersOfEntityAtIndex:(unsigned int)fp8;
- (unsigned int)_countOfEntitiesGroupedByEntityAtIndex:(unsigned int)fp8;
- (id)copyQueryResultsDescription;
- (void)dealloc;
- (struct __CFArray *)_getPlaylistItemResults;
- (id)bucketizedInfoByGroupingStringProperty:(unsigned long)fp8;

@end

@interface MLDulcimerMusicLibrary : MusicLibrary
{
    struct PurpleEngineContext *_purpleDataEngineContext;
    NSMutableSet *_purchasedContentXMLFilesLoaded;
    NSMutableDictionary *_purchasedContentInfo;
    NSString *_basePath;
    struct AppContext *_appContext;
    struct TrackData *_trackData;
    struct ITImageLibrary *_imageLibrary;
    unsigned int _needsFlush:1;
    unsigned int _triedToLoadImageDB:1;
    unsigned int _autoflushScheduled:1;
    double _autoflushTargetTime;
    unsigned int _cached_HasPodcastsResult:2;
    unsigned int _cached_HasAudibleAudioBooksResult:2;
    unsigned int _cached_HasAudioBooksResult:2;
    unsigned int _cached_HasCompilationsResult:2;
    unsigned int _cached_HasComposersResult:2;
    unsigned int _cached_HasAlbumsResult:2;
    unsigned int _cached_HasGenresResult:2;
}

+ (void)_checkForControlDirectoryLocationWithMediaFolderPath:(id)fp8;
+ (id)dbModDate;
+ (id)_purchasedContentXMLFilenames;
+ (BOOL)_hasFinishedDBInitialization;
+ (BOOL)hasContent;
+ (void)resetLibrary;
+ (void)jetsamMemory;
+ (struct PlaylistItem *)copyShallowPlaylistItemPtr:(struct PlaylistItem *)fp8;
+ (id)_controlDirectoryPathWithBasePath:(id)fp8;
+ (id)_pathForResourceFileOrFolder:(int)fp8 basePath:(id)fp12;
- (void)_loadPurchasedDataForInitIfNecessary;
- (void)_clearCachedDBState;
- (id)initWithPath:(id)fp8;
- (void)_willAttemptToLoadPurchasedContent;
- (void)_dbSyncWillBegin;
- (void)_dbSyncDidEnd;
- (unsigned int)countOfPurchasedContent;
- (void)_savePurchaseDBInfo;
- (void)_updatePurchasedContentInfoWithXMLFilename:(id)fp8 inDirectory:(id)fp12;
- (BOOL)_updatePurchasedContentInfo;
- (void)_loadSavedPurchaseDB;
- (BOOL)_dbUpdatePurchasedContent;
- (void)dealloc;
- (id)_checkForArtworkDB;
- (BOOL)_loadImageLibraryIfNecessaryForTrack:(struct TrackInfo *)fp8;
- (id)imageDataForTrackInfo:(struct TrackInfo *)fp8 artworkFormatID:(unsigned int)fp12 size:(struct _NSSize)fp16 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp24;
- (id)imageDataForTrackInfo:(struct TrackInfo *)fp8 artworkFormatID:(unsigned int)fp12 size:(struct _NSSize)fp16 chapterIndex:(unsigned int)fp24 chapterTOC:(id)fp28 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp32;
- (id)availableArtworkFormatIDsForTrackInfo:(struct TrackInfo *)fp8;
- (id)availableArtworkFormatIDsForTrackInfo:(struct TrackInfo *)fp8 chapterIndex:(unsigned int)fp12 chapterTOC:(id)fp16;
- (BOOL)imageDataAvailableForTrackInfo:(struct TrackInfo *)fp8;
- (void)_scheduleAutoflushWithInterval:(double)fp8;
- (void)_cancelAutoflush;
- (void)_autoflush;
- (void)noteTrackInfoChanged:(struct TrackInfo *)fp8 autoflushDelay:(double)fp12;
- (BOOL)flush;
- (id)path;
- (id)pathForResourceFileOrFolder:(int)fp8;
- (id)pathForResourceFileOrFolder:(int)fp8 createParentFolderIfNecessary:(BOOL)fp12;
- (BOOL)hasAnyVideos;
- (BOOL)hasPodcasts;
- (BOOL)hasAudibleAudioBooks;
- (BOOL)hasAudioBooks;
- (BOOL)hasCompilations;
- (BOOL)hasComposers;
- (BOOL)hasAlbums;
- (BOOL)hasGenres;
- (unsigned int)countOfAllVideoTracks;
- (unsigned int)countOfAllAudioTracks;
- (id)preferredAudioTracks;
- (id)preferredSubtitleTracks;
- (void)debugLogPerfStatistics;
- (BOOL)markHiddenTracks:(id)fp8 hidden:(BOOL)fp12;
- (BOOL)markAndDeleteTracks:(id)fp8;
- (void)loadArtwork;
- (void)unloadArtwork;
- (struct MLArtworkFormatSpec)formatSpecForArtworkFormatID:(unsigned int)fp8;
- (void)_dulcNoticePlaylistAdded:(struct Playlist *)fp8;
- (id)_preparedPlaylistChangeUserInfoForDeletionRange:(struct _NSRange)fp8 insertionRange:(struct _NSRange)fp16;
- (void)_dulcNoticePlaylistContentsWillMutate:(struct Playlist *)fp8 deletionRange:(struct _NSRange)fp12 insertionRange:(struct _NSRange)fp20;
- (void)_dulcNoticePlaylistContentsDidMutate:(struct Playlist *)fp8 deletionRange:(struct _NSRange)fp12 insertionRange:(struct _NSRange)fp20;
- (void)_dulcNoticePlaylistContentsWillMutate:(struct Playlist *)fp8 willMoveItemsFromRange:(struct _NSRange)fp12 toIndex:(unsigned int)fp20;
- (void)_dulcNoticePlaylistContentsDidMutate:(struct Playlist *)fp8 didMoveItemsFromRange:(struct _NSRange)fp12 toIndex:(unsigned int)fp20;
- (void)_dulcNoticePlaylistAttributesMutated:(struct Playlist *)fp8;
- (void)_flushOnTheGoPlaylistChanges;
- (id)activeOnTheGoPlaylist;
- (void)_saveOTGPlaylist:(struct Playlist *)fp8;
- (void)_mutateOTGPlaylist:(struct Playlist *)fp8 insertTracks:(id)fp12 atIndex:(unsigned int)fp16 postNotifications:(BOOL)fp20;
- (void)_mutateOTGPlaylist:(struct Playlist *)fp8 insertEntitiesFromQuery:(id)fp12 entityIndexes:(id)fp16 atIndex:(unsigned int)fp20 postNotifications:(BOOL)fp24;
- (void)_mutateOTGPlaylist:(struct Playlist *)fp8 removeTracksInRange:(struct _NSRange)fp12 postNotifications:(BOOL)fp20;
- (void)_mutateOTGPlaylist:(struct Playlist *)fp8 moveEntitiesFromRange:(struct _NSRange)fp12 toIndex:(unsigned int)fp20 postNotifications:(BOOL)fp24;
- (struct Playlist *)_getPrimaryPlaylist;
- (struct __MLDTracksQueryResults)_findTracksSatisfyingPredicateChain:(struct __TestPredicateNode *)fp8 inPlaylist:(struct Playlist *)fp12 groupingProperty:(unsigned long)fp16 groupingThreshold:(unsigned int)fp20 reportGroupMembers:(BOOL)fp24 allowMixedResults:(BOOL)fp28 firstGroupItemOnly:(BOOL)fp32 orderInfo:(struct _MLTrackOrderInfo *)fp36 skipUnknown:(BOOL)fp40;
- (struct __CFArray *)_findPlaylistsSatisfyingPredicateChain:(struct __TestPredicateNode *)fp8 groupingProperty:(unsigned long)fp12 orderWithSpecialItemsFirst:(BOOL)fp16;
- (struct Playlist *)_firstPlaylistPtrMatchingPredicate:(void *)fp8 ignorePrimaryDBPlaylist:(BOOL)fp12 updateSmartPlaylists:(BOOL)fp16 context:(void *)fp20;
- (struct PlaylistItem *)_findFirstTrackSatisfyingPredicate:(void *)fp8 context:(void *)fp12;
- (struct Playlist *)_playlistTargetForCriteria:(struct _MLCompoundPredicateStruct *)fp8 query:(id)fp12;
- (BOOL)_playlistItemPtrMatchesPredicateChain:(struct __TestPredicateNode *)fp8 playlistItemPtr:(struct PlaylistItem *)fp12;
- (BOOL)_playlistPtrMatchesPredicateChain:(struct __TestPredicateNode *)fp8 playlistPtr:(struct Playlist *)fp12;
- (unsigned int)_indexOfFirstTracksSatisfyingPredicateChain:(struct __TestPredicateNode *)fp8 inArrayOfPlaylistItemPtr:(struct __CFArray *)fp12;
- (unsigned int)_indexOfFirstPlaylistSatisfyingPredicateChain:(struct __TestPredicateNode *)fp8 inArrayOfPlaylistPtr:(struct __CFArray *)fp12;

@end

@interface MLDulcimerMusicLibrary (MLDulcimerDebug)
+ (void)__PreventDeadCodeStrippingThingsWeWantToExport;
+ (void)hackToMakeSureTheseDontGetDeadCodeStripped;
+ (void)_dumpDebuggingInfo;
- (void)_dumpAllTracks;
- (void)_dumpAllArtworkInfo;
- (void)_dumpPlaylistAndPlaylistItems;
- (void)_dumpDebuggingInfoAfterInit;
- (void)_dumpDebuggingInfo;
@end

@interface MLQueryImpl (MLDulcimerMusicLibrary)
+ (Class)implClassForEvaluatingQuery:(id)fp8;
@end

@interface MusicLibrary (Setup)
+ (Class)sharedMusicLibraryClass;
@end

@interface MLChapterTOC : NSObject
{
}

- (unsigned int)countOfChapters;
- (unsigned int)countOfGroupsForProperty:(int)fp8;
- (unsigned int)chapterIndexForGroupIndex:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)groupIndexForChapterIndex:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)durationInMSOfGroupAtIndex:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)groupIndexAtTimeLocationInMS:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)timeLocationInMSOfGroupAtIndex:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)chapterIndexAtTimeLocationInMS:(unsigned int)fp8;
- (unsigned int)durationInMSOfChapterAtIndex:(unsigned int)fp8;
- (unsigned int)timeLocationInMSOfChapterAtIndex:(unsigned int)fp8;
- (id)titlePropertyOfChapterAtIndex:(unsigned int)fp8;
- (id)urlTitlePropertyOfChapterAtIndex:(unsigned int)fp8;
- (id)urlPropertyOfChapterAtIndex:(unsigned int)fp8;
- (id)imageDataForArtworkFormatID:(unsigned int)fp8 chapterIndex:(unsigned int)fp12 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp16;
- (id)bestImageDataForSize:(struct _NSSize)fp8 chapterIndex:(unsigned int)fp16 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp20;
- (id)availableArtworkFormatIDsForChapterIndex:(unsigned int)fp8;

@end

@interface MLChapterTOCRep : MLChapterTOC
{
    struct TrackInfo *_trackInfo;
    unsigned int *_picCookieIndexMap;
    unsigned int *_urlCookieIndexMap;
    unsigned int *_nameCookieIndexMap;
}

- (id)initWithTrackInfo:(struct TrackInfo *)fp8;
- (void)dealloc;
- (unsigned int)countOfChapters;
- (unsigned int *)_cachedCookieIndexMapForProperty:(int)fp8 createIfNecessary:(BOOL)fp12;
- (unsigned int)countOfGroupsForProperty:(int)fp8;
- (unsigned int)chapterIndexForGroupIndex:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)groupIndexForChapterIndex:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)durationInMSOfGroupAtIndex:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)groupIndexAtTimeLocationInMS:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)timeLocationInMSOfGroupAtIndex:(unsigned int)fp8 groupingProperty:(int)fp12;
- (unsigned int)durationInMSOfChapterAtIndex:(unsigned int)fp8;
- (unsigned int)timeLocationInMSOfChapterAtIndex:(unsigned int)fp8;
- (id)titlePropertyOfChapterAtIndex:(unsigned int)fp8;
- (id)urlTitlePropertyOfChapterAtIndex:(unsigned int)fp8;
- (id)urlPropertyOfChapterAtIndex:(unsigned int)fp8;
- (id)_getImageWithArtworkFormatID:(unsigned int)fp8 size:(struct _NSSize)fp12 chapterIndex:(unsigned int)fp20 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp24;
- (id)imageDataForArtworkFormatID:(unsigned int)fp8 chapterIndex:(unsigned int)fp12 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp16;
- (id)bestImageDataForSize:(struct _NSSize)fp8 chapterIndex:(unsigned int)fp16 artworkInstanceInfo:(struct MLArtworkInstanceInfo *)fp20;
- (id)availableArtworkFormatIDsForChapterIndex:(unsigned int)fp8;

@end

@interface MLEQPreset : NSObject
{
    NSString *_name;
    NSString *_localizedName;
    int _builtInPresetType;
}

+ (id)eqPresetForName:(id)fp8;
+ (id)eqPresetForBuiltInPresetType:(int)fp8;
- (id)initWithBuiltInPresetType:(int)fp8;
- (void)dealloc;
- (id)name;
- (id)localizedName;
- (int)builtInPresetType;
- (int)typeForAVController;

@end

@interface MLPhoto : NSObject
{
    int _imageID;
}

- (id)initWithImageID:(int)fp8;
- (int)imageID;

@end

@interface MLPhotoAlbum : NSObject
{
    int _albumID;
    NSString *_albumName;
    NSMutableArray *_images;
    id _posterImage;
    BOOL _isLibrary;
    unsigned long long _playlistID;
    unsigned long long _songID;
}

+ (id)libraryAlbum;
- (id)initWithAlbumID:(unsigned int)fp8 albumName:(id)fp12;
- (void)dealloc;
- (id)description;
- (unsigned int)albumID;
- (id)name;
- (void)setName:(id)fp8;
- (BOOL)isLibrary;
- (void)setLibrary:(BOOL)fp8;
- (id)images;
- (id)imageWithImageID:(int)fp8;
- (int)count;
- (void)deleteImageAtIndex:(int)fp8;
- (unsigned long long)slideshowPlaylistID;
- (void)setSlideshowPlaylistID:(unsigned long long)fp8;
- (unsigned long long)slideshowSongID;
- (void)setSlideshowSongID:(unsigned long long)fp8;

@end

@interface MLPhotoLibrary : NSObject
{
    NSString *_path;
    NSMutableArray *_albums;
}

+ (id)sharedPhotoLibrary;
+ (id)imageFormats;
+ (int)widthForFormat:(int)fp8;
+ (int)heightForFormat:(int)fp8;
+ (BOOL)formatIsCropped:(int)fp8;
- (void)_loadImageLibrary;
- (void)_flushImageLibrary;
- (id)initWithPath:(id)fp8;
- (void)dealloc;
- (id)dataForPhoto:(id)fp8 format:(int)fp12 width:(int *)fp16 height:(int *)fp20 bytesPerRow:(int *)fp24 dataWidth:(int *)fp28 dataHeight:(int *)fp32 imageDataOffset:(int *)fp36;
- (id)albums;
- (void)flushAlbums;
- (void)reloadAlbums;
- (id)_imagesForAlbum:(id)fp8 firstImageOnly:(BOOL)fp12;
- (int)numberOfImagesInAlbum:(id)fp8;
- (int)countOfAllPhotos;
- (id)firstImageForAlbum:(id)fp8;
- (id)imagesForAlbum:(id)fp8;

@end

@interface MLQueryBucketInfo : NSObject
{
    MLQuery *_query;
    unsigned int _stringProperty;
    unsigned int _bucketCount;
    unsigned int _loadedBuckets;
    unsigned int *_bucketToEntityIndexMapping;
    unsigned int _scannedForBuckets:1;
}

- (id)initWithQuery:(id)fp8 stringProperty:(unsigned long)fp12 knownBucketCount:(unsigned int)fp16;
- (void)dealloc;
- (unsigned int)countOfBuckets;
- (void)_loadBucketCountIfNecessary;
- (void)_loadUpToBucket:(unsigned int)fp8;
- (unsigned int)entityIndexForBucketIndex:(unsigned int)fp8;

@end

@interface MLMappedFileSegment : NSObject
{
    MLMappedFile *_mappedFile;
    unsigned int _index;
    void *_ptr;
    unsigned int _length;
    BOOL _dying;
}

- (id)initWithMappedFile:(id)fp8 index:(unsigned long)fp12 length:(unsigned long)fp16 idealAddress:(void *)fp20;
- (id)initWithMappedFile:(id)fp8 offset:(long long)fp12 length:(unsigned long)fp20;
- (void)release;
- (void)dealloc;
- (void *)bytes;

@end

@interface MLMappedFile : NSObject
{
    NSString *_path;
    int _file;
    long long _size;
    unsigned int _granularity;
    unsigned int _numberOfSegments;
    MLMappedFileSegment **_segments;
    BOOL _dying;
    BOOL _assumeFileIsFixedSize;
}

+ (id)mappedFileWithPath:(id)fp8 fileIsFixedSize:(BOOL)fp12;
- (id)initWithPath:(id)fp8 fileIsFixedSize:(BOOL)fp12;
- (void)release;
- (void)dealloc;
- (id)_segmentAtIndex:(unsigned long)fp8;
- (void)_refreshFileInfo;
- (void)refreshFileSizeAndDependentInfo;
- (id)mappedImageDataAtOffset:(long long)fp8 length:(unsigned long)fp16;
- (void)releaseSegment:(unsigned long)fp8;
- (int)fileDescriptor;
- (long long)size;
- (unsigned long)granularity;

@end

@interface MLMappedImageData : NSData
{
    MLMappedFileSegment *_mappedFileSegment;
    void *_bytes;
    unsigned int _length;
}

+ (id)mappedImageDataForFile:(id)fp8 offset:(long long)fp12 length:(unsigned long)fp20 fileIsFixedSize:(BOOL)fp24;
- (id)initWithMappedFileSegment:(id)fp8 bytes:(void *)fp12 length:(unsigned long)fp16;
- (void *)bytes;
- (unsigned long)length;
- (void)dealloc;

@end

@interface MLPhotoDCFDirectory : MLPhotoDCFObject
{
    MLPhotoDCIMDirectory *_dcimDirectory;
    struct __CFDictionary *_fileGroupsByNumber;
    int _maxFileGroupNumber;
    int _lastUsedFileGroupNumber;
}

- (id)_lastUsedFileGroupUserInfoKey;
- (id)initWithName:(id)fp8 number:(int)fp12 dcimDirectory:(id)fp16;
- (void)dealloc;
- (id)dcimDirectory;
- (BOOL)_canAddImageWithMinimumFileGroupNumber:(int)fp8;
- (BOOL)canAddImage;
- (id)fullPath;
- (void)ensureDirectoryExists;
- (id)fileGroups;
- (id)nextAvailableFileGroup;
- (void)removeFileGroup:(id)fp8;

@end

@interface MLPhotoDCFFileGroup : MLPhotoDCFObject
{
    id _delegate;
    MLPhotoDCFDirectory *_directory;
    NSMutableSet *_extensions;
    NSDate *_date;
    NSString *_preferredExtension;
}

- (id)initWithName:(id)fp8 number:(int)fp12 directory:(id)fp16;
- (void)dealloc;
- (void)setDelegate:(id)fp8;
- (id)directory;
- (id)imageSourceTypeHint;
- (BOOL)isValid;
- (void)addExtension:(id)fp8;
- (id)date;
- (void)setDate:(id)fp8;
- (int)compare:(id)fp8;
- (id)description;
- (id)pathForFullSizeImage;
- (id)pathForThumbnailFile;
- (id)pathForLowResolutionFile;

@end

@interface MLPhotoDCFObject : NSObject
{
    NSString *_name;
    int _number;
}

+ (id)validDCFNameForName:(id)fp8 requiredLength:(int)fp12 nameLength:(int)fp16 number:(int *)fp20 numberRange:(struct _NSRange)fp24;
- (id)initWithName:(id)fp8 number:(int)fp12;
- (void)dealloc;
- (id)name;
- (int)number;
- (int)compare:(id)fp8;
- (id)description;

@end

@interface MLPhotoDCIMDirectory : NSObject
{
    NSString *_dcimPath;
    NSString *_miscPath;
    NSString *_posterImagePath;
    NSMutableArray *_topLevelDirectories;
    struct __CFDictionary *_topLevelDirectoriesByNumber;
    struct __CFSet *_unusableTopLevelDirectoryNumbers;
    int _lastUsedDirectoryNumber;
    NSMutableDictionary *_userInfo;
    BOOL _userInfoDidChange;
}

- (id)_userInfoPath;
- (id)initWithDCIMPath:(id)fp8;
- (void)dealloc;
- (id)dcimPath;
- (id)miscPath;
- (id)posterImagePath;
- (void)saveUserInfo;
- (id)userInfo;
- (id)userInfoObjectForKey:(id)fp8;
- (void)setUserInfoObject:(id)fp8 forKey:(id)fp12;
- (id)dcfDirectories;
- (void)clearDCFDirectories;
- (id)nextAvailableDirectory;
- (int)countOfAllPhotos;

@end

