This mapping has 5 all-to-all groups: every node on one side corresponds to every node on the other, and none is deleted or inserted. Each member carries an all N:M badge; selecting one highlights all of its counterparts, in the tree and in the code view alike.

Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–1086 unchanged (1086 lines)
1087 IsScanRunning = false;
1088 }
1089 }
1090
1091 public async Task ValidateTopLibraryFolders(CancellationToken cancellationToken, bool removeRoot = false)
1092 {
1093 await RootFolder.RefreshMetadata(cancellationToken).ConfigureAwait(false);
1094
1095 // Start by just validating the children of the root, but go no further
1096 await RootFolder.ValidateChildren(
1097 new Progress<double>(),
1098 new MetadataRefreshOptions(new DirectoryService(_fileSystem)),
1099 recursive: false,
1100 allowRemoveRoot: removeRoot,
1101 cancellationToken: cancellationToken).ConfigureAwait(false);
1102
1103 await GetUserRootFolder().RefreshMetadata(cancellationToken).ConfigureAwait(false);
1104
1105 await GetUserRootFolder().ValidateChildren(
1106 new Progress<double>(),
1107 new MetadataRefreshOptions(new DirectoryService(_fileSystem)),
1108 recursive: false,
1109 allowRemoveRoot: removeRoot,
1110 cancellationToken: cancellationToken).ConfigureAwait(false);
1111
1112 // Quickly scan CollectionFolders for changes
1113 foreach (var child in GetUserRootFolder().Children.OfType<Folder>())
1114 {
1115 // If the user has somehow deleted the collection directory, remove the metadata from the database.
1116 if (child is CollectionFolder collectionFolder && !Directory.Exists(collectionFolder.Path))
1117 {
1118 _itemRepository.DeleteItem(collectionFolder.Id);
1119 }
…lines 1120–3291 unchanged (2172 lines)

After

…lines 1–1086 unchanged (1086 lines)
1087 IsScanRunning = false;
1088 }
1089 }
1090
1091 public async Task ValidateTopLibraryFolders(CancellationToken cancellationToken, bool removeRoot = false)
1092 {
1093 RootFolder.Children = null;
1094 await RootFolder.RefreshMetadata(cancellationToken).ConfigureAwait(false);
1095
1096 // Start by just validating the children of the root, but go no further
1097 await RootFolder.ValidateChildren(
1098 new Progress<double>(),
1099 new MetadataRefreshOptions(new DirectoryService(_fileSystem)),
1100 recursive: false,
1101 allowRemoveRoot: removeRoot,
1102 cancellationToken: cancellationToken).ConfigureAwait(false);
1103
1104 var rootFolder = GetUserRootFolder();
1105 rootFolder.Children = null;
1106
1107 await rootFolder.RefreshMetadata(cancellationToken).ConfigureAwait(false);
1108
1109 await rootFolder.ValidateChildren(
1110 new Progress<double>(),
1111 new MetadataRefreshOptions(new DirectoryService(_fileSystem)),
1112 recursive: false,
1113 allowRemoveRoot: removeRoot,
1114 cancellationToken: cancellationToken).ConfigureAwait(false);
1115
1116 // Quickly scan CollectionFolders for changes
1117 foreach (var child in rootFolder.Children!.OfType<Folder>())
1118 {
1119 // If the user has somehow deleted the collection directory, remove the metadata from the database.
1120 if (child is CollectionFolder collectionFolder && !Directory.Exists(collectionFolder.Path))
1121 {
1122 _itemRepository.DeleteItem(collectionFolder.Id);
1123 }
…lines 1124–3295 unchanged (2172 lines)

Before

compilation_unit
preproc_pragma
#pragma "#pragma"
warning "warning"
disable "disable"
identifier "CS1591"
preproc_pragma
#pragma "#pragma"
warning "warning"
disable "disable"
identifier "CA5394"
using_directive
using "using"
identifier "System"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "System"
. "."
identifier "Collections"
. "."
identifier "Generic"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Globalization"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "IO"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Linq"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Net"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "System"
. "."
identifier "Net"
. "."
identifier "Http"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Threading"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "System"
. "."
identifier "Threading"
. "."
identifier "Tasks"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "BitFaster"
. "."
identifier "Caching"
. "."
identifier "Lru"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Naming"
. "."
identifier "Common"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Naming"
. "."
identifier "TV"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Library"
. "."
identifier "Resolvers"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Library"
. "."
identifier "Validators"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Playlists"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "ScheduledTasks"
. "."
identifier "Tasks"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Sorting"
; ";"
using_directive
using "using"
qualified_name
identifier "Jellyfin"
. "."
identifier "Data"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "Jellyfin"
. "."
identifier "Data"
. "."
identifier "Enums"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "Jellyfin"
. "."
identifier "Database"
. "."
identifier "Implementations"
. "."
identifier "Entities"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "Jellyfin"
. "."
identifier "Database"
. "."
identifier "Implementations"
. "."
identifier "Enums"
; ";"
using_directive
using "using"
qualified_name
identifier "Jellyfin"
. "."
identifier "Extensions"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Common"
. "."
identifier "Extensions"
; ";"
using_directive
using "using"
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Configuration"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Drawing"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Dto"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
. "."
identifier "Audio"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "IO"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Library"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "LiveTv"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "MediaEncoding"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "MediaSegments"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Persistence"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Providers"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Resolvers"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Sorting"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Trickplay"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Configuration"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Dlna"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Drawing"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Dto"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Entities"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "IO"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Library"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Querying"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Tasks"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "Microsoft"
. "."
identifier "Extensions"
. "."
identifier "Logging"
; ";"
using_directive
using "using"
identifier "Episode"
= "="
qualified_name
qualified_name
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
. "."
identifier "TV"
. "."
identifier "Episode"
; ";"
using_directive
using "using"
identifier "EpisodeInfo"
= "="
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Naming"
. "."
identifier "TV"
. "."
identifier "EpisodeInfo"
; ";"
using_directive
using "using"
identifier "Genre"
= "="
qualified_name
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
. "."
identifier "Genre"
; ";"
using_directive
using "using"
identifier "Person"
= "="
qualified_name
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
. "."
identifier "Person"
; ";"
using_directive
using "using"
identifier "VideoResolver"
= "="
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Naming"
. "."
identifier "Video"
. "."
identifier "VideoResolver"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Library"
declaration_list
{ "{"
comment "/// <summary>"
comment "/// Class LibraryManager."
comment "/// </summary>"
class_declaration
modifier
public "public"
class "class"
identifier "LibraryManager"
base_list
: ":"
identifier "ILibraryManager"
declaration_list
{ "{"
field_declaration
modifier
private "private"
modifier
const "const"
variable_declaration
predefined_type "string"
variable_declarator
identifier "ShortcutFileExtension"
= "="
string_literal
" "\""
string_literal_content ".mblink"
" "\""
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "ILogger"
type_argument_list
< "<"
identifier "LibraryManager"
> ">"
variable_declarator
identifier "_logger"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "ITaskManager"
variable_declarator
identifier "_taskManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IUserManager"
variable_declarator
identifier "_userManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IUserDataManager"
variable_declarator
identifier "_userDataManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IServerConfigurationManager"
variable_declarator
identifier "_configurationManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "Lazy"
type_argument_list
< "<"
identifier "ILibraryMonitor"
> ">"
variable_declarator
identifier "_libraryMonitorFactory"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "Lazy"
type_argument_list
< "<"
identifier "IProviderManager"
> ">"
variable_declarator
identifier "_providerManagerFactory"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "Lazy"
type_argument_list
< "<"
identifier "IUserViewManager"
> ">"
variable_declarator
identifier "_userViewManagerFactory"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IServerApplicationHost"
variable_declarator
identifier "_appHost"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IMediaEncoder"
variable_declarator
identifier "_mediaEncoder"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IFileSystem"
variable_declarator
identifier "_fileSystem"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IItemRepository"
variable_declarator
identifier "_itemRepository"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IImageProcessor"
variable_declarator
identifier "_imageProcessor"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "NamingOptions"
variable_declarator
identifier "_namingOptions"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IPeopleRepository"
variable_declarator
identifier "_peopleRepository"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "ExtraResolver"
variable_declarator
identifier "_extraResolver"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IPathManager"
variable_declarator
identifier "_pathManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "FastConcurrentLru"
type_argument_list
< "<"
identifier "Guid"
, ","
identifier "BaseItem"
> ">"
variable_declarator
identifier "_cache"
; ";"
comment "/// <summary>"
comment "/// The _root folder sync lock."
comment "/// </summary>"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "Lock"
variable_declarator
identifier "_rootFolderSyncLock"
= "="
implicit_object_creation_expression
new "new"
argument_list
( "("
) ")"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "Lock"
variable_declarator
identifier "_userRootFolderSyncLock"
= "="
implicit_object_creation_expression
new "new"
argument_list
( "("
) ")"
; ";"
field_declaration (+21 nodes collapsed)
comment "/// <summary>"
comment "/// The _root folder."
comment "/// </summary>"
field_declaration
modifier
private "private"
modifier
volatile "volatile"
variable_declaration
nullable_type
identifier "AggregateFolder"
? "?"
variable_declarator
identifier "_rootFolder"
; ";"
field_declaration
modifier
private "private"
modifier
volatile "volatile"
variable_declaration
nullable_type
identifier "UserRootFolder"
? "?"
variable_declarator
identifier "_userRootFolder"
; ";"
field_declaration
modifier
private "private"
variable_declaration
predefined_type "bool"
variable_declarator
identifier "_wizardCompleted"
; ";"
comment "/// <summary>"
comment "/// Initializes a new instance of the <see cref=\"LibraryMana"...
comment "/// </summary>"
comment "/// <param name=\"appHost\">The application host.</param>"
comment "/// <param name=\"loggerFactory\">The logger factory.</param>"
comment "/// <param name=\"taskManager\">The task manager.</param>"
comment "/// <param name=\"userManager\">The user manager.</param>"
comment "/// <param name=\"configurationManager\">The configuration man"...
comment "/// <param name=\"userDataManager\">The user data manager.</pa"...
comment "/// <param name=\"libraryMonitorFactory\">The library monitor."...
comment "/// <param name=\"fileSystem\">The file system.</param>"
comment "/// <param name=\"providerManagerFactory\">The provider manage"...
comment "/// <param name=\"userViewManagerFactory\">The user view manag"...
comment "/// <param name=\"mediaEncoder\">The media encoder.</param>"
comment "/// <param name=\"itemRepository\">The item repository.</param"...
comment "/// <param name=\"imageProcessor\">The image processor.</param"...
comment "/// <param name=\"namingOptions\">The naming options.</param>"
comment "/// <param name=\"directoryService\">The directory service.</p"...
comment "/// <param name=\"peopleRepository\">The people repository.</p"...
comment "/// <param name=\"pathManager\">The path manager.</param>"
constructor_declaration (+278 nodes collapsed)
comment "/// <summary>"
comment "/// Occurs when [item added]."
comment "/// </summary>"
event_field_declaration
modifier
public "public"
event "event"
variable_declaration
nullable_type
generic_name
identifier "EventHandler"
type_argument_list
< "<"
identifier "ItemChangeEventArgs"
> ">"
? "?"
variable_declarator
identifier "ItemAdded"
; ";"
comment "/// <summary>"
comment "/// Occurs when [item updated]."
comment "/// </summary>"
event_field_declaration
modifier
public "public"
event "event"
variable_declaration
nullable_type
generic_name
identifier "EventHandler"
type_argument_list
< "<"
identifier "ItemChangeEventArgs"
> ">"
? "?"
variable_declarator
identifier "ItemUpdated"
; ";"
comment "/// <summary>"
comment "/// Occurs when [item removed]."
comment "/// </summary>"
event_field_declaration
modifier
public "public"
event "event"
variable_declaration
nullable_type
generic_name
identifier "EventHandler"
type_argument_list
< "<"
identifier "ItemChangeEventArgs"
> ">"
? "?"
variable_declarator
identifier "ItemRemoved"
; ";"
comment "/// <summary>"
comment "/// Gets the root folder."
comment "/// </summary>"
comment "/// <value>The root folder.</value>"
property_declaration (+47 nodes collapsed)
property_declaration
modifier
private "private"
identifier "ILibraryMonitor"
identifier "LibraryMonitor"
arrow_expression_clause
=> "=>"
member_access_expression
identifier "_libraryMonitorFactory"
. "."
identifier "Value"
; ";"
property_declaration
modifier
private "private"
identifier "IProviderManager"
identifier "ProviderManager"
arrow_expression_clause
=> "=>"
member_access_expression
identifier "_providerManagerFactory"
. "."
identifier "Value"
; ";"
property_declaration
modifier
private "private"
identifier "IUserViewManager"
identifier "UserViewManager"
arrow_expression_clause
=> "=>"
member_access_expression
identifier "_userViewManagerFactory"
. "."
identifier "Value"
; ";"
comment "/// <summary>"
comment "/// Gets or sets the postscan tasks."
comment "/// </summary>"
comment "/// <value>The postscan tasks.</value>"
property_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Gets or sets the intro providers."
comment "/// </summary>"
comment "/// <value>The intro providers.</value>"
property_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Gets or sets the list of entity resolution ignore rules."
comment "/// </summary>"
comment "/// <value>The entity resolution ignore rules.</value>"
property_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Gets or sets the list of currently registered entity res"...
comment "/// </summary>"
comment "/// <value>The entity resolvers enumerable.</value>"
property_declaration (+23 nodes collapsed)
property_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Gets or sets the comparers."
comment "/// </summary>"
comment "/// <value>The comparers.</value>"
property_declaration (+23 nodes collapsed)
property_declaration
modifier
public "public"
predefined_type "bool"
identifier "IsScanRunning"
accessor_list
{ "{"
accessor_declaration
get "get"
; ";"
accessor_declaration
modifier
private "private"
set "set"
; ";"
} "}"
comment "/// <summary>"
comment "/// Adds the parts."
comment "/// </summary>"
comment "/// <param name=\"rules\">The rules.</param>"
comment "/// <param name=\"resolvers\">The resolvers.</param>"
comment "/// <param name=\"introProviders\">The intro providers.</param"...
comment "/// <param name=\"itemComparers\">The item comparers.</param>"
comment "/// <param name=\"postScanTasks\">The post scan tasks.</param>"
method_declaration (+160 nodes collapsed)
comment "/// <summary>"
comment "/// Records the configuration values."
comment "/// </summary>"
comment "/// <param name=\"configuration\">The configuration.</param>"
method_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Configurations the updated."
comment "/// </summary>"
comment "/// <param name=\"sender\">The sender.</param>"
comment "/// <param name=\"e\">The <see cref=\"EventArgs\" /> instance co"...
method_declaration (+79 nodes collapsed)
method_declaration (+113 nodes collapsed)
method_declaration (+34 nodes collapsed)
method_declaration (+78 nodes collapsed)
method_declaration (+906 nodes collapsed)
method_declaration (+226 nodes collapsed)
method_declaration (+77 nodes collapsed)
method_declaration (+202 nodes collapsed)
comment "/// <summary>"
comment "/// Resolves the item."
comment "/// </summary>"
comment "/// <param name=\"args\">The args.</param>"
comment "/// <param name=\"resolvers\">The resolvers.</param>"
comment "/// <returns>BaseItem.</returns>"
method_declaration (+119 nodes collapsed)
method_declaration (+89 nodes collapsed)
method_declaration (+35 nodes collapsed)
method_declaration (+193 nodes collapsed)
method_declaration (+58 nodes collapsed)
method_declaration (+468 nodes collapsed)
method_declaration (+47 nodes collapsed)
method_declaration (+284 nodes collapsed)
method_declaration (+69 nodes collapsed)
method_declaration (+303 nodes collapsed)
method_declaration (+194 nodes collapsed)
comment "/// <summary>"
comment "/// Creates the root media folder."
comment "/// </summary>"
comment "/// <returns>AggregateFolder.</returns>"
comment "/// <exception cref=\"InvalidOperationException\">Cannot creat"...
method_declaration (+463 nodes collapsed)
method_declaration (+341 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+117 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+81 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the studio."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <returns>Task{Studio}.</returns>"
method_declaration (+46 nodes collapsed)
method_declaration (+38 nodes collapsed)
method_declaration (+38 nodes collapsed)
method_declaration (+38 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the genre."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <returns>Task{Genre}.</returns>"
method_declaration (+46 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the music genre."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <returns>Task{MusicGenre}.</returns>"
method_declaration (+46 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the year."
comment "/// </summary>"
comment "/// <param name=\"value\">The value.</param>"
comment "/// <returns>Task{Year}.</returns>"
method_declaration (+101 nodes collapsed)
comment "/// <summary>"
comment "/// Gets a Genre."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <returns>Task{Genre}.</returns>"
method_declaration (+35 nodes collapsed)
method_declaration (+42 nodes collapsed)
method_declaration (+316 nodes collapsed)
method_declaration (+66 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+71 nodes collapsed)
comment "/// <summary>"
comment "/// Reloads the root media folder."
comment "/// </summary>"
comment "/// <param name=\"progress\">The progress.</param>"
comment "/// <param name=\"cancellationToken\">The cancellation token.<"...
comment "/// <returns>Task.</returns>"
method_declaration (+46 nodes collapsed)
comment "/// <summary>"
comment "/// Validates the media library internal."
comment "/// </summary>"
comment "/// <param name=\"progress\">The progress.</param>"
comment "/// <param name=\"cancellationToken\">The cancellation token.<"...
comment "/// <returns>Task.</returns>"
method_declaration (+93 nodes collapsed)
method_declaration
modifier
public "public"
modifier
async "async"
identifier "Task"
identifier "ValidateTopLibraryFolders"
parameter_list
( "("
parameter
identifier "CancellationToken"
identifier "cancellationToken"
, ","
parameter
predefined_type "bool"
identifier "removeRoot"
= "="
boolean_literal
false "false"
) ")"
block
{ "{"
expression_statement (+24 nodes collapsed)
comment "// Start by just validating the children of the root, but go"...
expression_statement (+67 nodes collapsed)
expression_statement
await_expression
await "await"
invocation_expression
member_access_expression
invocation_expression
member_access_expression
invocation_expression all 3:1
identifier "GetUserRootFolder" all 3:1
argument_list all 3:1
( "(" all 3:1
) ")" all 3:1
. "."
identifier "RefreshMetadata"
argument_list
( "("
argument
identifier "cancellationToken"
) ")"
. "."
identifier "ConfigureAwait"
argument_list
( "("
argument
boolean_literal
false "false"
) ")"
; ";"
expression_statement
await_expression
await "await"
invocation_expression
member_access_expression
invocation_expression
member_access_expression
invocation_expression all 3:1
identifier "GetUserRootFolder" all 3:1
argument_list all 3:1
( "(" all 3:1
) ")" all 3:1
. "."
identifier "ValidateChildren"
argument_list (+48 nodes collapsed)
. "."
identifier "ConfigureAwait"
argument_list
( "("
argument
boolean_literal
false "false"
) ")"
; ";"
comment "// Quickly scan CollectionFolders for changes"
foreach_statement
foreach "foreach"
( "("
implicit_type
var "var"
identifier "child"
in "in"
invocation_expression
member_access_expression
member_access_expression
invocation_expression all 3:1
identifier "GetUserRootFolder" all 3:1
argument_list all 3:1
( "(" all 3:1
) ")" all 3:1
. "."
identifier "Children"
. "."
generic_name
identifier "OfType"
type_argument_list
< "<"
identifier "Folder"
> ">"
argument_list
( "("
) ")"
) ")"
block (+77 nodes collapsed)
} "}"
method_declaration (+237 nodes collapsed)
comment "/// <summary>"
comment "/// Runs the post scan tasks."
comment "/// </summary>"
comment "/// <param name=\"progress\">The progress.</param>"
comment "/// <param name=\"cancellationToken\">The cancellation token.<"...
comment "/// <returns>Task.</returns>"
method_declaration (+338 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the default view."
comment "/// </summary>"
comment "/// <returns>IEnumerable{VirtualFolderInfo}.</returns>"
method_declaration (+27 nodes collapsed)
method_declaration (+143 nodes collapsed)
method_declaration (+460 nodes collapsed)
method_declaration (+121 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+121 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+63 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+79 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+71 nodes collapsed)
method_declaration (+213 nodes collapsed)
method_declaration (+33 nodes collapsed)
method_declaration (+134 nodes collapsed)
method_declaration (+134 nodes collapsed)
method_declaration (+114 nodes collapsed)
method_declaration (+121 nodes collapsed)
method_declaration (+121 nodes collapsed)
method_declaration (+109 nodes collapsed)
method_declaration (+64 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+260 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+184 nodes collapsed)
method_declaration (+222 nodes collapsed)
method_declaration (+235 nodes collapsed)
method_declaration (+456 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the intros."
comment "/// </summary>"
comment "/// <param name=\"item\">The item.</param>"
comment "/// <param name=\"user\">The user.</param>"
comment "/// <returns>IEnumerable{System.String}.</returns>"
method_declaration (+159 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the intros."
comment "/// </summary>"
comment "/// <param name=\"provider\">The provider.</param>"
comment "/// <param name=\"item\">The item.</param>"
comment "/// <param name=\"user\">The user.</param>"
comment "/// <returns>Task&lt;IEnumerable&lt;IntroInfo&gt;&gt;.</retu"...
method_declaration (+101 nodes collapsed)
comment "/// <summary>"
comment "/// Resolves the intro."
comment "/// </summary>"
comment "/// <param name=\"info\">The info.</param>"
comment "/// <returns>Video.</returns>"
method_declaration (+298 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+288 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+292 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the comparer."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <param name=\"user\">The user.</param>"
comment "/// <returns>IBaseItemComparer.</returns>"
method_declaration (+129 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+43 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+181 nodes collapsed)
method_declaration (+186 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+641 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+220 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+47 nodes collapsed)
method_declaration (+88 nodes collapsed)
comment "/// <summary>"
comment "/// Reports the item removed."
comment "/// </summary>"
comment "/// <param name=\"item\">The item.</param>"
comment "/// <param name=\"parent\">The parent item.</param>"
method_declaration (+91 nodes collapsed)
comment "/// <summary>"
comment "/// Retrieves the item."
comment "/// </summary>"
comment "/// <param name=\"id\">The id.</param>"
comment "/// <returns>BaseItem.</returns>"
method_declaration (+27 nodes collapsed)
method_declaration (+51 nodes collapsed)
method_declaration (+171 nodes collapsed)
method_declaration (+108 nodes collapsed)
method_declaration (+87 nodes collapsed)
method_declaration (+97 nodes collapsed)
method_declaration (+87 nodes collapsed)
method_declaration (+30 nodes collapsed)
method_declaration (+30 nodes collapsed)
method_declaration (+56 nodes collapsed)
method_declaration (+145 nodes collapsed)
method_declaration (+206 nodes collapsed)
method_declaration (+53 nodes collapsed)
method_declaration (+341 nodes collapsed)
method_declaration (+513 nodes collapsed)
method_declaration (+422 nodes collapsed)
method_declaration (+576 nodes collapsed)
method_declaration (+98 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+26 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+80 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+827 nodes collapsed)
method_declaration (+95 nodes collapsed)
method_declaration (+656 nodes collapsed)
method_declaration (+79 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+81 nodes collapsed)
method_declaration (+157 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+55 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+132 nodes collapsed)
method_declaration (+335 nodes collapsed)
method_declaration (+528 nodes collapsed)
method_declaration (+552 nodes collapsed)
method_declaration (+56 nodes collapsed)
method_declaration (+34 nodes collapsed)
method_declaration (+346 nodes collapsed)
method_declaration (+111 nodes collapsed)
method_declaration (+209 nodes collapsed)
method_declaration (+251 nodes collapsed)
method_declaration (+217 nodes collapsed)
method_declaration (+345 nodes collapsed)
method_declaration (+78 nodes collapsed)
} "}"
} "}"

After

compilation_unit
preproc_pragma
#pragma "#pragma"
warning "warning"
disable "disable"
identifier "CS1591"
preproc_pragma
#pragma "#pragma"
warning "warning"
disable "disable"
identifier "CA5394"
using_directive
using "using"
identifier "System"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "System"
. "."
identifier "Collections"
. "."
identifier "Generic"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Globalization"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "IO"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Linq"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Net"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "System"
. "."
identifier "Net"
. "."
identifier "Http"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Threading"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "System"
. "."
identifier "Threading"
. "."
identifier "Tasks"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "BitFaster"
. "."
identifier "Caching"
. "."
identifier "Lru"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Naming"
. "."
identifier "Common"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Naming"
. "."
identifier "TV"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Library"
. "."
identifier "Resolvers"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Library"
. "."
identifier "Validators"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Playlists"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "ScheduledTasks"
. "."
identifier "Tasks"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Sorting"
; ";"
using_directive
using "using"
qualified_name
identifier "Jellyfin"
. "."
identifier "Data"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "Jellyfin"
. "."
identifier "Data"
. "."
identifier "Enums"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "Jellyfin"
. "."
identifier "Database"
. "."
identifier "Implementations"
. "."
identifier "Entities"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "Jellyfin"
. "."
identifier "Database"
. "."
identifier "Implementations"
. "."
identifier "Enums"
; ";"
using_directive
using "using"
qualified_name
identifier "Jellyfin"
. "."
identifier "Extensions"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Common"
. "."
identifier "Extensions"
; ";"
using_directive
using "using"
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Configuration"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Drawing"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Dto"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
. "."
identifier "Audio"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "IO"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Library"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "LiveTv"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "MediaEncoding"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "MediaSegments"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Persistence"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Providers"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Resolvers"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Sorting"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Trickplay"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Configuration"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Dlna"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Drawing"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Dto"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Entities"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "IO"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Library"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Querying"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Model"
. "."
identifier "Tasks"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "Microsoft"
. "."
identifier "Extensions"
. "."
identifier "Logging"
; ";"
using_directive
using "using"
identifier "Episode"
= "="
qualified_name
qualified_name
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
. "."
identifier "TV"
. "."
identifier "Episode"
; ";"
using_directive
using "using"
identifier "EpisodeInfo"
= "="
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Naming"
. "."
identifier "TV"
. "."
identifier "EpisodeInfo"
; ";"
using_directive
using "using"
identifier "Genre"
= "="
qualified_name
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
. "."
identifier "Genre"
; ";"
using_directive
using "using"
identifier "Person"
= "="
qualified_name
qualified_name
qualified_name
identifier "MediaBrowser"
. "."
identifier "Controller"
. "."
identifier "Entities"
. "."
identifier "Person"
; ";"
using_directive
using "using"
identifier "VideoResolver"
= "="
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Naming"
. "."
identifier "Video"
. "."
identifier "VideoResolver"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
qualified_name
identifier "Emby"
. "."
identifier "Server"
. "."
identifier "Implementations"
. "."
identifier "Library"
declaration_list
{ "{"
comment "/// <summary>"
comment "/// Class LibraryManager."
comment "/// </summary>"
class_declaration
modifier
public "public"
class "class"
identifier "LibraryManager"
base_list
: ":"
identifier "ILibraryManager"
declaration_list
{ "{"
field_declaration
modifier
private "private"
modifier
const "const"
variable_declaration
predefined_type "string"
variable_declarator
identifier "ShortcutFileExtension"
= "="
string_literal
" "\""
string_literal_content ".mblink"
" "\""
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "ILogger"
type_argument_list
< "<"
identifier "LibraryManager"
> ">"
variable_declarator
identifier "_logger"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "ITaskManager"
variable_declarator
identifier "_taskManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IUserManager"
variable_declarator
identifier "_userManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IUserDataManager"
variable_declarator
identifier "_userDataManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IServerConfigurationManager"
variable_declarator
identifier "_configurationManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "Lazy"
type_argument_list
< "<"
identifier "ILibraryMonitor"
> ">"
variable_declarator
identifier "_libraryMonitorFactory"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "Lazy"
type_argument_list
< "<"
identifier "IProviderManager"
> ">"
variable_declarator
identifier "_providerManagerFactory"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "Lazy"
type_argument_list
< "<"
identifier "IUserViewManager"
> ">"
variable_declarator
identifier "_userViewManagerFactory"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IServerApplicationHost"
variable_declarator
identifier "_appHost"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IMediaEncoder"
variable_declarator
identifier "_mediaEncoder"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IFileSystem"
variable_declarator
identifier "_fileSystem"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IItemRepository"
variable_declarator
identifier "_itemRepository"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IImageProcessor"
variable_declarator
identifier "_imageProcessor"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "NamingOptions"
variable_declarator
identifier "_namingOptions"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IPeopleRepository"
variable_declarator
identifier "_peopleRepository"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "ExtraResolver"
variable_declarator
identifier "_extraResolver"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IPathManager"
variable_declarator
identifier "_pathManager"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "FastConcurrentLru"
type_argument_list
< "<"
identifier "Guid"
, ","
identifier "BaseItem"
> ">"
variable_declarator
identifier "_cache"
; ";"
comment "/// <summary>"
comment "/// The _root folder sync lock."
comment "/// </summary>"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "Lock"
variable_declarator
identifier "_rootFolderSyncLock"
= "="
implicit_object_creation_expression
new "new"
argument_list
( "("
) ")"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "Lock"
variable_declarator
identifier "_userRootFolderSyncLock"
= "="
implicit_object_creation_expression
new "new"
argument_list
( "("
) ")"
; ";"
field_declaration (+21 nodes collapsed)
comment "/// <summary>"
comment "/// The _root folder."
comment "/// </summary>"
field_declaration
modifier
private "private"
modifier
volatile "volatile"
variable_declaration
nullable_type
identifier "AggregateFolder"
? "?"
variable_declarator
identifier "_rootFolder"
; ";"
field_declaration
modifier
private "private"
modifier
volatile "volatile"
variable_declaration
nullable_type
identifier "UserRootFolder"
? "?"
variable_declarator
identifier "_userRootFolder"
; ";"
field_declaration
modifier
private "private"
variable_declaration
predefined_type "bool"
variable_declarator
identifier "_wizardCompleted"
; ";"
comment "/// <summary>"
comment "/// Initializes a new instance of the <see cref=\"LibraryMana"...
comment "/// </summary>"
comment "/// <param name=\"appHost\">The application host.</param>"
comment "/// <param name=\"loggerFactory\">The logger factory.</param>"
comment "/// <param name=\"taskManager\">The task manager.</param>"
comment "/// <param name=\"userManager\">The user manager.</param>"
comment "/// <param name=\"configurationManager\">The configuration man"...
comment "/// <param name=\"userDataManager\">The user data manager.</pa"...
comment "/// <param name=\"libraryMonitorFactory\">The library monitor."...
comment "/// <param name=\"fileSystem\">The file system.</param>"
comment "/// <param name=\"providerManagerFactory\">The provider manage"...
comment "/// <param name=\"userViewManagerFactory\">The user view manag"...
comment "/// <param name=\"mediaEncoder\">The media encoder.</param>"
comment "/// <param name=\"itemRepository\">The item repository.</param"...
comment "/// <param name=\"imageProcessor\">The image processor.</param"...
comment "/// <param name=\"namingOptions\">The naming options.</param>"
comment "/// <param name=\"directoryService\">The directory service.</p"...
comment "/// <param name=\"peopleRepository\">The people repository.</p"...
comment "/// <param name=\"pathManager\">The path manager.</param>"
constructor_declaration (+278 nodes collapsed)
comment "/// <summary>"
comment "/// Occurs when [item added]."
comment "/// </summary>"
event_field_declaration
modifier
public "public"
event "event"
variable_declaration
nullable_type
generic_name
identifier "EventHandler"
type_argument_list
< "<"
identifier "ItemChangeEventArgs"
> ">"
? "?"
variable_declarator
identifier "ItemAdded"
; ";"
comment "/// <summary>"
comment "/// Occurs when [item updated]."
comment "/// </summary>"
event_field_declaration
modifier
public "public"
event "event"
variable_declaration
nullable_type
generic_name
identifier "EventHandler"
type_argument_list
< "<"
identifier "ItemChangeEventArgs"
> ">"
? "?"
variable_declarator
identifier "ItemUpdated"
; ";"
comment "/// <summary>"
comment "/// Occurs when [item removed]."
comment "/// </summary>"
event_field_declaration
modifier
public "public"
event "event"
variable_declaration
nullable_type
generic_name
identifier "EventHandler"
type_argument_list
< "<"
identifier "ItemChangeEventArgs"
> ">"
? "?"
variable_declarator
identifier "ItemRemoved"
; ";"
comment "/// <summary>"
comment "/// Gets the root folder."
comment "/// </summary>"
comment "/// <value>The root folder.</value>"
property_declaration (+47 nodes collapsed)
property_declaration
modifier
private "private"
identifier "ILibraryMonitor"
identifier "LibraryMonitor"
arrow_expression_clause
=> "=>"
member_access_expression
identifier "_libraryMonitorFactory"
. "."
identifier "Value"
; ";"
property_declaration
modifier
private "private"
identifier "IProviderManager"
identifier "ProviderManager"
arrow_expression_clause
=> "=>"
member_access_expression
identifier "_providerManagerFactory"
. "."
identifier "Value"
; ";"
property_declaration
modifier
private "private"
identifier "IUserViewManager"
identifier "UserViewManager"
arrow_expression_clause
=> "=>"
member_access_expression
identifier "_userViewManagerFactory"
. "."
identifier "Value"
; ";"
comment "/// <summary>"
comment "/// Gets or sets the postscan tasks."
comment "/// </summary>"
comment "/// <value>The postscan tasks.</value>"
property_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Gets or sets the intro providers."
comment "/// </summary>"
comment "/// <value>The intro providers.</value>"
property_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Gets or sets the list of entity resolution ignore rules."
comment "/// </summary>"
comment "/// <value>The entity resolution ignore rules.</value>"
property_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Gets or sets the list of currently registered entity res"...
comment "/// </summary>"
comment "/// <value>The entity resolvers enumerable.</value>"
property_declaration (+23 nodes collapsed)
property_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Gets or sets the comparers."
comment "/// </summary>"
comment "/// <value>The comparers.</value>"
property_declaration (+23 nodes collapsed)
property_declaration
modifier
public "public"
predefined_type "bool"
identifier "IsScanRunning"
accessor_list
{ "{"
accessor_declaration
get "get"
; ";"
accessor_declaration
modifier
private "private"
set "set"
; ";"
} "}"
comment "/// <summary>"
comment "/// Adds the parts."
comment "/// </summary>"
comment "/// <param name=\"rules\">The rules.</param>"
comment "/// <param name=\"resolvers\">The resolvers.</param>"
comment "/// <param name=\"introProviders\">The intro providers.</param"...
comment "/// <param name=\"itemComparers\">The item comparers.</param>"
comment "/// <param name=\"postScanTasks\">The post scan tasks.</param>"
method_declaration (+160 nodes collapsed)
comment "/// <summary>"
comment "/// Records the configuration values."
comment "/// </summary>"
comment "/// <param name=\"configuration\">The configuration.</param>"
method_declaration (+23 nodes collapsed)
comment "/// <summary>"
comment "/// Configurations the updated."
comment "/// </summary>"
comment "/// <param name=\"sender\">The sender.</param>"
comment "/// <param name=\"e\">The <see cref=\"EventArgs\" /> instance co"...
method_declaration (+79 nodes collapsed)
method_declaration (+113 nodes collapsed)
method_declaration (+34 nodes collapsed)
method_declaration (+78 nodes collapsed)
method_declaration (+906 nodes collapsed)
method_declaration (+226 nodes collapsed)
method_declaration (+77 nodes collapsed)
method_declaration (+202 nodes collapsed)
comment "/// <summary>"
comment "/// Resolves the item."
comment "/// </summary>"
comment "/// <param name=\"args\">The args.</param>"
comment "/// <param name=\"resolvers\">The resolvers.</param>"
comment "/// <returns>BaseItem.</returns>"
method_declaration (+119 nodes collapsed)
method_declaration (+89 nodes collapsed)
method_declaration (+35 nodes collapsed)
method_declaration (+193 nodes collapsed)
method_declaration (+58 nodes collapsed)
method_declaration (+468 nodes collapsed)
method_declaration (+47 nodes collapsed)
method_declaration (+284 nodes collapsed)
method_declaration (+69 nodes collapsed)
method_declaration (+303 nodes collapsed)
method_declaration (+194 nodes collapsed)
comment "/// <summary>"
comment "/// Creates the root media folder."
comment "/// </summary>"
comment "/// <returns>AggregateFolder.</returns>"
comment "/// <exception cref=\"InvalidOperationException\">Cannot creat"...
method_declaration (+463 nodes collapsed)
method_declaration (+341 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+117 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+81 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the studio."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <returns>Task{Studio}.</returns>"
method_declaration (+46 nodes collapsed)
method_declaration (+38 nodes collapsed)
method_declaration (+38 nodes collapsed)
method_declaration (+38 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the genre."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <returns>Task{Genre}.</returns>"
method_declaration (+46 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the music genre."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <returns>Task{MusicGenre}.</returns>"
method_declaration (+46 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the year."
comment "/// </summary>"
comment "/// <param name=\"value\">The value.</param>"
comment "/// <returns>Task{Year}.</returns>"
method_declaration (+101 nodes collapsed)
comment "/// <summary>"
comment "/// Gets a Genre."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <returns>Task{Genre}.</returns>"
method_declaration (+35 nodes collapsed)
method_declaration (+42 nodes collapsed)
method_declaration (+316 nodes collapsed)
method_declaration (+66 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+71 nodes collapsed)
comment "/// <summary>"
comment "/// Reloads the root media folder."
comment "/// </summary>"
comment "/// <param name=\"progress\">The progress.</param>"
comment "/// <param name=\"cancellationToken\">The cancellation token.<"...
comment "/// <returns>Task.</returns>"
method_declaration (+46 nodes collapsed)
comment "/// <summary>"
comment "/// Validates the media library internal."
comment "/// </summary>"
comment "/// <param name=\"progress\">The progress.</param>"
comment "/// <param name=\"cancellationToken\">The cancellation token.<"...
comment "/// <returns>Task.</returns>"
method_declaration (+93 nodes collapsed)
method_declaration
modifier
public "public"
modifier
async "async"
identifier "Task"
identifier "ValidateTopLibraryFolders"
parameter_list
( "("
parameter
identifier "CancellationToken"
identifier "cancellationToken"
, ","
parameter
predefined_type "bool"
identifier "removeRoot"
= "="
boolean_literal
false "false"
) ")"
block
{ "{"
expression_statement
assignment_expression
member_access_expression
identifier "RootFolder"
. "."
identifier "Children"
= "="
null_literal "null"
; ";"
expression_statement (+24 nodes collapsed)
comment "// Start by just validating the children of the root, but go"...
expression_statement (+67 nodes collapsed)
local_declaration_statement
variable_declaration
implicit_type
var "var"
variable_declarator
identifier "rootFolder"
= "="
invocation_expression all 3:1
identifier "GetUserRootFolder" all 3:1
argument_list all 3:1
( "(" all 3:1
) ")" all 3:1
; ";"
expression_statement
assignment_expression
member_access_expression
identifier "rootFolder"
. "."
identifier "Children"
= "="
null_literal "null"
; ";"
expression_statement
await_expression
await "await"
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "rootFolder"
. "."
identifier "RefreshMetadata"
argument_list
( "("
argument
identifier "cancellationToken"
) ")"
. "."
identifier "ConfigureAwait"
argument_list
( "("
argument
boolean_literal
false "false"
) ")"
; ";"
expression_statement
await_expression
await "await"
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "rootFolder"
. "."
identifier "ValidateChildren"
argument_list (+48 nodes collapsed)
. "."
identifier "ConfigureAwait"
argument_list
( "("
argument
boolean_literal
false "false"
) ")"
; ";"
comment "// Quickly scan CollectionFolders for changes"
foreach_statement
foreach "foreach"
( "("
implicit_type
var "var"
identifier "child"
in "in"
invocation_expression
member_access_expression
postfix_unary_expression
member_access_expression
identifier "rootFolder"
. "."
identifier "Children"
! "!"
. "."
generic_name
identifier "OfType"
type_argument_list
< "<"
identifier "Folder"
> ">"
argument_list
( "("
) ")"
) ")"
block (+77 nodes collapsed)
} "}"
method_declaration (+237 nodes collapsed)
comment "/// <summary>"
comment "/// Runs the post scan tasks."
comment "/// </summary>"
comment "/// <param name=\"progress\">The progress.</param>"
comment "/// <param name=\"cancellationToken\">The cancellation token.<"...
comment "/// <returns>Task.</returns>"
method_declaration (+338 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the default view."
comment "/// </summary>"
comment "/// <returns>IEnumerable{VirtualFolderInfo}.</returns>"
method_declaration (+27 nodes collapsed)
method_declaration (+143 nodes collapsed)
method_declaration (+460 nodes collapsed)
method_declaration (+121 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+121 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+63 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+79 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+71 nodes collapsed)
method_declaration (+213 nodes collapsed)
method_declaration (+33 nodes collapsed)
method_declaration (+134 nodes collapsed)
method_declaration (+134 nodes collapsed)
method_declaration (+114 nodes collapsed)
method_declaration (+121 nodes collapsed)
method_declaration (+121 nodes collapsed)
method_declaration (+109 nodes collapsed)
method_declaration (+64 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+260 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+184 nodes collapsed)
method_declaration (+222 nodes collapsed)
method_declaration (+235 nodes collapsed)
method_declaration (+456 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the intros."
comment "/// </summary>"
comment "/// <param name=\"item\">The item.</param>"
comment "/// <param name=\"user\">The user.</param>"
comment "/// <returns>IEnumerable{System.String}.</returns>"
method_declaration (+159 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the intros."
comment "/// </summary>"
comment "/// <param name=\"provider\">The provider.</param>"
comment "/// <param name=\"item\">The item.</param>"
comment "/// <param name=\"user\">The user.</param>"
comment "/// <returns>Task&lt;IEnumerable&lt;IntroInfo&gt;&gt;.</retu"...
method_declaration (+101 nodes collapsed)
comment "/// <summary>"
comment "/// Resolves the intro."
comment "/// </summary>"
comment "/// <param name=\"info\">The info.</param>"
comment "/// <returns>Video.</returns>"
method_declaration (+298 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+288 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+292 nodes collapsed)
comment "/// <summary>"
comment "/// Gets the comparer."
comment "/// </summary>"
comment "/// <param name=\"name\">The name.</param>"
comment "/// <param name=\"user\">The user.</param>"
comment "/// <returns>IBaseItemComparer.</returns>"
method_declaration (+129 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+43 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+181 nodes collapsed)
method_declaration (+186 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+641 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+220 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+47 nodes collapsed)
method_declaration (+88 nodes collapsed)
comment "/// <summary>"
comment "/// Reports the item removed."
comment "/// </summary>"
comment "/// <param name=\"item\">The item.</param>"
comment "/// <param name=\"parent\">The parent item.</param>"
method_declaration (+91 nodes collapsed)
comment "/// <summary>"
comment "/// Retrieves the item."
comment "/// </summary>"
comment "/// <param name=\"id\">The id.</param>"
comment "/// <returns>BaseItem.</returns>"
method_declaration (+27 nodes collapsed)
method_declaration (+51 nodes collapsed)
method_declaration (+171 nodes collapsed)
method_declaration (+108 nodes collapsed)
method_declaration (+87 nodes collapsed)
method_declaration (+97 nodes collapsed)
method_declaration (+87 nodes collapsed)
method_declaration (+30 nodes collapsed)
method_declaration (+30 nodes collapsed)
method_declaration (+56 nodes collapsed)
method_declaration (+145 nodes collapsed)
method_declaration (+206 nodes collapsed)
method_declaration (+53 nodes collapsed)
method_declaration (+341 nodes collapsed)
method_declaration (+513 nodes collapsed)
method_declaration (+422 nodes collapsed)
method_declaration (+576 nodes collapsed)
method_declaration (+98 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+26 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+80 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+827 nodes collapsed)
method_declaration (+95 nodes collapsed)
method_declaration (+656 nodes collapsed)
method_declaration (+79 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+81 nodes collapsed)
method_declaration (+157 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+55 nodes collapsed)
comment "/// <inheritdoc />"
method_declaration (+132 nodes collapsed)
method_declaration (+335 nodes collapsed)
method_declaration (+528 nodes collapsed)
method_declaration (+552 nodes collapsed)
method_declaration (+56 nodes collapsed)
method_declaration (+34 nodes collapsed)
method_declaration (+346 nodes collapsed)
method_declaration (+111 nodes collapsed)
method_declaration (+209 nodes collapsed)
method_declaration (+251 nodes collapsed)
method_declaration (+217 nodes collapsed)
method_declaration (+345 nodes collapsed)
method_declaration (+78 nodes collapsed)
} "}"
} "}"