This mapping has 2 multi-map groups: several pairings are equally correct there. The code view shows one arbitrary valid pairing, not the only one.

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–124 unchanged (124 lines)
125
126 List<IFileInfo> unwanted = null;
127 if (filter == FilterFilesType.Known)
128 {
129 unwanted = combined
130 .Where(x => x.DiskFile.Length == x.DbFile.Size &&
131 Math.Abs((x.DiskFile.LastWriteTimeUtc - x.DbFile.Modified).TotalSeconds) <= 1)
132 .Select(x => x.DiskFile)
133 .ToList();
134 _logger.Trace($"{unwanted.Count} unchanged existing files");
135 }
136 else if (filter == FilterFilesType.Matched)
137 {
138 unwanted = combined
139 .Where(x => x.DiskFile.Length == x.DbFile.Size &&
140 Math.Abs((x.DiskFile.LastWriteTimeUtc - x.DbFile.Modified).TotalSeconds) <= 1 &&
141 (x.DbFile.Tracks == null || (x.DbFile.Tracks.IsLoaded && x.DbFile.Tracks.Value.Any())))
142 .Select(x => x.DiskFile)
143 .ToList();
144 _logger.Trace($"{unwanted.Count} unchanged and matched files");
145 }
146 else
…lines 147–240 unchanged (94 lines)

After

…lines 1–124 unchanged (124 lines)
125
126 List<IFileInfo> unwanted = null;
127 if (filter == FilterFilesType.Known)
128 {
129 unwanted = combined
130 .Where(x => x.DiskFile.Length == x.DbFile.Size &&
131 Math.Abs((x.DiskFile.LastWriteTimeUtc - x.DbFile.Modified.ToUniversalTime()).TotalSeconds) <= 1)
132 .Select(x => x.DiskFile)
133 .ToList();
134 _logger.Trace($"{unwanted.Count} unchanged existing files");
135 }
136 else if (filter == FilterFilesType.Matched)
137 {
138 unwanted = combined
139 .Where(x => x.DiskFile.Length == x.DbFile.Size &&
140 Math.Abs((x.DiskFile.LastWriteTimeUtc - x.DbFile.Modified.ToUniversalTime()).TotalSeconds) <= 1 &&
141 (x.DbFile.Tracks == null || (x.DbFile.Tracks.IsLoaded && x.DbFile.Tracks.Value.Any())))
142 .Select(x => x.DiskFile)
143 .ToList();
144 _logger.Trace($"{unwanted.Count} unchanged and matched files");
145 }
146 else
…lines 147–240 unchanged (94 lines)

Before

compilation_unit
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
qualified_name
identifier "System"
. "."
identifier "IO"
. "."
identifier "Abstractions"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Linq"
; ";"
using_directive
using "using"
identifier "NLog"
; ";"
using_directive
using "using"
qualified_name
identifier "NzbDrone"
. "."
identifier "Common"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Datastore"
. "."
identifier "Events"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "MediaFiles"
. "."
identifier "Events"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Messaging"
. "."
identifier "Events"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Music"
. "."
identifier "Events"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "RootFolders"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "MediaFiles"
declaration_list
{ "{"
interface_declaration (+262 nodes collapsed)
class_declaration
modifier
public "public"
class "class"
identifier "MediaFileService"
base_list (+29 nodes collapsed)
declaration_list
{ "{"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IEventAggregator"
variable_declarator
identifier "_eventAggregator"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IMediaFileRepository"
variable_declarator
identifier "_mediaFileRepository"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "Logger"
variable_declarator
identifier "_logger"
; ";"
constructor_declaration (+39 nodes collapsed)
method_declaration (+55 nodes collapsed)
method_declaration (+62 nodes collapsed)
method_declaration (+26 nodes collapsed)
method_declaration (+31 nodes collapsed)
method_declaration (+67 nodes collapsed)
method_declaration (+88 nodes collapsed)
method_declaration
modifier
public "public"
generic_name
identifier "List"
type_argument_list
< "<"
identifier "IFileInfo"
> ">"
identifier "FilterUnchangedFiles"
parameter_list
( "("
parameter
generic_name
identifier "List"
type_argument_list
< "<"
identifier "IFileInfo"
> ">"
identifier "files"
, ","
parameter
identifier "FilterFilesType"
identifier "filter"
) ")"
block
{ "{"
if_statement
if "if"
( "("
binary_expression
identifier "filter"
== "=="
member_access_expression
identifier "FilterFilesType"
. "."
identifier "None"
) ")"
block
{ "{"
return_statement
return "return"
identifier "files"
; ";"
} "}"
expression_statement (+24 nodes collapsed)
local_declaration_statement (+37 nodes collapsed)
expression_statement (+24 nodes collapsed)
if_statement (+21 nodes collapsed)
local_declaration_statement (+72 nodes collapsed)
expression_statement (+24 nodes collapsed)
local_declaration_statement
variable_declaration
generic_name
identifier "List"
type_argument_list
< "<"
identifier "IFileInfo"
> ">"
variable_declarator
identifier "unwanted"
= "="
null_literal "null"
; ";"
if_statement
if "if"
( "("
binary_expression
identifier "filter"
== "=="
member_access_expression
identifier "FilterFilesType"
. "."
identifier "Known"
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "unwanted"
= "="
invocation_expression
member_access_expression
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "combined"
. "."
identifier "Where"
argument_list
( "("
argument
lambda_expression
implicit_parameter "x"
=> "=>"
binary_expression
binary_expression
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
. "."
identifier "Length"
== "=="
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DbFile"
. "."
identifier "Size"
&& "&&"
binary_expression
invocation_expression
member_access_expression
identifier "Math"
. "."
identifier "Abs"
argument_list
( "("
argument
member_access_expression
parenthesized_expression
( "("
binary_expression
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
. "."
identifier "LastWriteTimeUtc"
- "-"
member_access_expression any 2:3
member_access_expression any 2:3
identifier "x"
. "."
identifier "DbFile"
. "."
identifier "Modified"
) ")"
. "."
identifier "TotalSeconds"
) ")"
<= "<="
integer_literal "1"
) ")"
. "."
identifier "Select"
argument_list
( "("
argument
lambda_expression
implicit_parameter "x"
=> "=>"
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
) ")"
. "."
identifier "ToList"
argument_list
( "("
) ")"
; ";"
expression_statement (+23 nodes collapsed)
} "}"
else "else"
if_statement
if "if"
( "("
binary_expression
identifier "filter"
== "=="
member_access_expression
identifier "FilterFilesType"
. "."
identifier "Matched"
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "unwanted"
= "="
invocation_expression
member_access_expression
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "combined"
. "."
identifier "Where"
argument_list
( "("
argument
lambda_expression
implicit_parameter "x"
=> "=>"
binary_expression
binary_expression
binary_expression
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
. "."
identifier "Length"
== "=="
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DbFile"
. "."
identifier "Size"
&& "&&"
binary_expression
invocation_expression
member_access_expression
identifier "Math"
. "."
identifier "Abs"
argument_list
( "("
argument
member_access_expression
parenthesized_expression
( "("
binary_expression
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
. "."
identifier "LastWriteTimeUtc"
- "-"
member_access_expression any 2:3
member_access_expression any 2:3
identifier "x"
. "."
identifier "DbFile"
. "."
identifier "Modified"
) ")"
. "."
identifier "TotalSeconds"
) ")"
<= "<="
integer_literal "1"
&& "&&"
parenthesized_expression (+47 nodes collapsed)
) ")"
. "."
identifier "Select"
argument_list
( "("
argument
lambda_expression
implicit_parameter "x"
=> "=>"
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
) ")"
. "."
identifier "ToList"
argument_list
( "("
) ")"
; ";"
expression_statement (+23 nodes collapsed)
} "}"
else "else"
block
{ "{"
throw_statement
throw "throw"
object_creation_expression
new "new"
identifier "ArgumentException"
argument_list
( "("
argument
string_literal
" "\""
string_literal_content "Unrecognised value of FilterFilesType filter"
" "\""
) ")"
; ";"
} "}"
return_statement
return "return"
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "files"
. "."
identifier "Except"
argument_list
( "("
argument
identifier "unwanted"
) ")"
. "."
identifier "ToList"
argument_list
( "("
) ")"
; ";"
} "}"
method_declaration (+27 nodes collapsed)
method_declaration (+44 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+37 nodes collapsed)
method_declaration (+27 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+27 nodes collapsed)
method_declaration (+40 nodes collapsed)
method_declaration (+110 nodes collapsed)
method_declaration (+65 nodes collapsed)
method_declaration (+72 nodes collapsed)
} "}"
} "}"

After

compilation_unit
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
qualified_name
identifier "System"
. "."
identifier "IO"
. "."
identifier "Abstractions"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Linq"
; ";"
using_directive
using "using"
identifier "NLog"
; ";"
using_directive
using "using"
qualified_name
identifier "NzbDrone"
. "."
identifier "Common"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Datastore"
. "."
identifier "Events"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "MediaFiles"
. "."
identifier "Events"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Messaging"
. "."
identifier "Events"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Music"
. "."
identifier "Events"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "RootFolders"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "MediaFiles"
declaration_list
{ "{"
interface_declaration (+262 nodes collapsed)
class_declaration
modifier
public "public"
class "class"
identifier "MediaFileService"
base_list (+29 nodes collapsed)
declaration_list
{ "{"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IEventAggregator"
variable_declarator
identifier "_eventAggregator"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "IMediaFileRepository"
variable_declarator
identifier "_mediaFileRepository"
; ";"
field_declaration
modifier
private "private"
modifier
readonly "readonly"
variable_declaration
identifier "Logger"
variable_declarator
identifier "_logger"
; ";"
constructor_declaration (+39 nodes collapsed)
method_declaration (+55 nodes collapsed)
method_declaration (+62 nodes collapsed)
method_declaration (+26 nodes collapsed)
method_declaration (+31 nodes collapsed)
method_declaration (+67 nodes collapsed)
method_declaration (+88 nodes collapsed)
method_declaration
modifier
public "public"
generic_name
identifier "List"
type_argument_list
< "<"
identifier "IFileInfo"
> ">"
identifier "FilterUnchangedFiles"
parameter_list
( "("
parameter
generic_name
identifier "List"
type_argument_list
< "<"
identifier "IFileInfo"
> ">"
identifier "files"
, ","
parameter
identifier "FilterFilesType"
identifier "filter"
) ")"
block
{ "{"
if_statement
if "if"
( "("
binary_expression
identifier "filter"
== "=="
member_access_expression
identifier "FilterFilesType"
. "."
identifier "None"
) ")"
block
{ "{"
return_statement
return "return"
identifier "files"
; ";"
} "}"
expression_statement (+24 nodes collapsed)
local_declaration_statement (+37 nodes collapsed)
expression_statement (+24 nodes collapsed)
if_statement (+21 nodes collapsed)
local_declaration_statement (+72 nodes collapsed)
expression_statement (+24 nodes collapsed)
local_declaration_statement
variable_declaration
generic_name
identifier "List"
type_argument_list
< "<"
identifier "IFileInfo"
> ">"
variable_declarator
identifier "unwanted"
= "="
null_literal "null"
; ";"
if_statement
if "if"
( "("
binary_expression
identifier "filter"
== "=="
member_access_expression
identifier "FilterFilesType"
. "."
identifier "Known"
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "unwanted"
= "="
invocation_expression
member_access_expression
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "combined"
. "."
identifier "Where"
argument_list
( "("
argument
lambda_expression
implicit_parameter "x"
=> "=>"
binary_expression
binary_expression
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
. "."
identifier "Length"
== "=="
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DbFile"
. "."
identifier "Size"
&& "&&"
binary_expression
invocation_expression
member_access_expression
identifier "Math"
. "."
identifier "Abs"
argument_list
( "("
argument
member_access_expression
parenthesized_expression
( "("
binary_expression
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
. "."
identifier "LastWriteTimeUtc"
- "-"
invocation_expression
member_access_expression any 2:3
member_access_expression any 2:3
member_access_expression any 2:3
identifier "x"
. "."
identifier "DbFile"
. "."
identifier "Modified"
. "."
identifier "ToUniversalTime"
argument_list
( "("
) ")"
) ")"
. "."
identifier "TotalSeconds"
) ")"
<= "<="
integer_literal "1"
) ")"
. "."
identifier "Select"
argument_list
( "("
argument
lambda_expression
implicit_parameter "x"
=> "=>"
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
) ")"
. "."
identifier "ToList"
argument_list
( "("
) ")"
; ";"
expression_statement (+23 nodes collapsed)
} "}"
else "else"
if_statement
if "if"
( "("
binary_expression
identifier "filter"
== "=="
member_access_expression
identifier "FilterFilesType"
. "."
identifier "Matched"
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "unwanted"
= "="
invocation_expression
member_access_expression
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "combined"
. "."
identifier "Where"
argument_list
( "("
argument
lambda_expression
implicit_parameter "x"
=> "=>"
binary_expression
binary_expression
binary_expression
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
. "."
identifier "Length"
== "=="
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DbFile"
. "."
identifier "Size"
&& "&&"
binary_expression
invocation_expression
member_access_expression
identifier "Math"
. "."
identifier "Abs"
argument_list
( "("
argument
member_access_expression
parenthesized_expression
( "("
binary_expression
member_access_expression
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
. "."
identifier "LastWriteTimeUtc"
- "-"
invocation_expression
member_access_expression any 2:3
member_access_expression any 2:3
member_access_expression any 2:3
identifier "x"
. "."
identifier "DbFile"
. "."
identifier "Modified"
. "."
identifier "ToUniversalTime"
argument_list
( "("
) ")"
) ")"
. "."
identifier "TotalSeconds"
) ")"
<= "<="
integer_literal "1"
&& "&&"
parenthesized_expression (+47 nodes collapsed)
) ")"
. "."
identifier "Select"
argument_list
( "("
argument
lambda_expression
implicit_parameter "x"
=> "=>"
member_access_expression
identifier "x"
. "."
identifier "DiskFile"
) ")"
. "."
identifier "ToList"
argument_list
( "("
) ")"
; ";"
expression_statement (+23 nodes collapsed)
} "}"
else "else"
block
{ "{"
throw_statement
throw "throw"
object_creation_expression
new "new"
identifier "ArgumentException"
argument_list
( "("
argument
string_literal
" "\""
string_literal_content "Unrecognised value of FilterFilesType filter"
" "\""
) ")"
; ";"
} "}"
return_statement
return "return"
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "files"
. "."
identifier "Except"
argument_list
( "("
argument
identifier "unwanted"
) ")"
. "."
identifier "ToList"
argument_list
( "("
) ")"
; ";"
} "}"
method_declaration (+27 nodes collapsed)
method_declaration (+44 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+37 nodes collapsed)
method_declaration (+27 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+32 nodes collapsed)
method_declaration (+27 nodes collapsed)
method_declaration (+40 nodes collapsed)
method_declaration (+110 nodes collapsed)
method_declaration (+65 nodes collapsed)
method_declaration (+72 nodes collapsed)
} "}"
} "}"