This mapping has 9 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–147 unchanged (147 lines)
148 {
149 RecordFailure(providerId, default(TimeSpan), false);
150 }
151
152 public virtual void HandleAsync(ProviderDeletedEvent<TProvider> message)
153 {
154 var providerStatus = _providerStatusRepository.FindByProviderId(message.ProviderId);
155
156 if (providerStatus != null)
157 {
158 _providerStatusRepository.Delete(providerStatus);
159 }
160 }
161 }
162}
163

After

…lines 1–147 unchanged (147 lines)
148 {
149 RecordFailure(providerId, default(TimeSpan), false);
150 }
151
152 public virtual void HandleAsync(ProviderDeletedEvent<TProvider> message)
153 {
154 _providerStatusRepository.DeleteByProviderId(message.ProviderId);
155 }
156 }
157}
158

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
identifier "System"
. "."
identifier "Linq"
; ";"
using_directive
using "using"
identifier "NLog"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Common"
. "."
identifier "EnvironmentInfo"
; ";"
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 "ThingiProvider"
. "."
identifier "Events"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "ThingiProvider"
. "."
identifier "Status"
declaration_list
{ "{"
interface_declaration (+77 nodes collapsed)
class_declaration
modifier
public "public"
modifier
abstract "abstract"
class "class"
identifier "ProviderStatusServiceBase"
type_parameter_list
< "<"
type_parameter
identifier "TProvider"
, ","
type_parameter
identifier "TModel"
> ">"
base_list
: ":"
generic_name
identifier "IProviderStatusServiceBase"
type_argument_list
< "<"
identifier "TModel"
> ">"
, ","
generic_name
identifier "IHandleAsync"
type_argument_list
< "<"
generic_name
identifier "ProviderDeletedEvent"
type_argument_list
< "<"
identifier "TProvider"
> ">"
> ">"
type_parameter_constraints_clause
where "where"
identifier "TProvider"
: ":"
type_parameter_constraint
identifier "IProvider"
type_parameter_constraints_clause
where "where"
identifier "TModel"
: ":"
type_parameter_constraint
identifier "ProviderStatusBase"
, ","
type_parameter_constraint
constructor_constraint
new "new"
( "("
) ")"
declaration_list
{ "{"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
predefined_type "object"
variable_declarator
identifier "_syncRoot"
= "="
object_creation_expression
new "new"
predefined_type "object"
argument_list
( "("
) ")"
; ";"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "IProviderStatusRepository"
type_argument_list
< "<"
identifier "TModel"
> ">"
variable_declarator
identifier "_providerStatusRepository"
; ";"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
identifier "IEventAggregator"
variable_declarator
identifier "_eventAggregator"
; ";"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
identifier "IRuntimeInfo"
variable_declarator
identifier "_runtimeInfo"
; ";"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
identifier "Logger"
variable_declarator
identifier "_logger"
; ";"
property_declaration (+26 nodes collapsed)
property_declaration
modifier
protected "protected"
identifier "TimeSpan"
identifier "MinimumTimeSinceInitialFailure"
accessor_list
{ "{"
accessor_declaration
get "get"
; ";"
accessor_declaration
set "set"
; ";"
} "}"
= "="
member_access_expression
identifier "TimeSpan"
. "."
identifier "Zero"
; ";"
property_declaration (+26 nodes collapsed)
constructor_declaration (+54 nodes collapsed)
method_declaration (+55 nodes collapsed)
method_declaration (+41 nodes collapsed)
method_declaration (+62 nodes collapsed)
method_declaration (+126 nodes collapsed)
method_declaration (+414 nodes collapsed)
method_declaration (+42 nodes collapsed)
method_declaration (+36 nodes collapsed)
method_declaration
modifier
public "public"
modifier
virtual "virtual"
predefined_type "void"
identifier "HandleAsync"
parameter_list
( "("
parameter
generic_name
identifier "ProviderDeletedEvent"
type_argument_list
< "<"
identifier "TProvider"
> ">"
identifier "message"
) ")"
block
{ "{"
local_declaration_statement
variable_declaration
implicit_type
var "var"
variable_declarator
identifier "providerStatus"
= "="
invocation_expression all 2:1
member_access_expression all 2:1
identifier "_providerStatusRepository" all 2:1
. "." all 2:1
identifier "FindByProviderId" all 2:1
argument_list all 2:1
( "(" all 2:1
argument
member_access_expression
identifier "message"
. "."
identifier "ProviderId"
) ")" all 2:1
; ";" all 2:1
if_statement
if "if"
( "("
binary_expression
identifier "providerStatus"
!= "!="
null_literal "null"
) ")"
block
{ "{"
expression_statement
invocation_expression all 2:1
member_access_expression all 2:1
identifier "_providerStatusRepository" all 2:1
. "." all 2:1
identifier "Delete" all 2:1
argument_list all 2:1
( "(" all 2:1
argument
identifier "providerStatus"
) ")" all 2:1
; ";" all 2:1
} "}"
} "}"
} "}"
} "}"

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
identifier "System"
. "."
identifier "Linq"
; ";"
using_directive
using "using"
identifier "NLog"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Common"
. "."
identifier "EnvironmentInfo"
; ";"
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 "ThingiProvider"
. "."
identifier "Events"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "ThingiProvider"
. "."
identifier "Status"
declaration_list
{ "{"
interface_declaration (+77 nodes collapsed)
class_declaration
modifier
public "public"
modifier
abstract "abstract"
class "class"
identifier "ProviderStatusServiceBase"
type_parameter_list
< "<"
type_parameter
identifier "TProvider"
, ","
type_parameter
identifier "TModel"
> ">"
base_list
: ":"
generic_name
identifier "IProviderStatusServiceBase"
type_argument_list
< "<"
identifier "TModel"
> ">"
, ","
generic_name
identifier "IHandleAsync"
type_argument_list
< "<"
generic_name
identifier "ProviderDeletedEvent"
type_argument_list
< "<"
identifier "TProvider"
> ">"
> ">"
type_parameter_constraints_clause
where "where"
identifier "TProvider"
: ":"
type_parameter_constraint
identifier "IProvider"
type_parameter_constraints_clause
where "where"
identifier "TModel"
: ":"
type_parameter_constraint
identifier "ProviderStatusBase"
, ","
type_parameter_constraint
constructor_constraint
new "new"
( "("
) ")"
declaration_list
{ "{"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
predefined_type "object"
variable_declarator
identifier "_syncRoot"
= "="
object_creation_expression
new "new"
predefined_type "object"
argument_list
( "("
) ")"
; ";"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
generic_name
identifier "IProviderStatusRepository"
type_argument_list
< "<"
identifier "TModel"
> ">"
variable_declarator
identifier "_providerStatusRepository"
; ";"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
identifier "IEventAggregator"
variable_declarator
identifier "_eventAggregator"
; ";"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
identifier "IRuntimeInfo"
variable_declarator
identifier "_runtimeInfo"
; ";"
field_declaration
modifier
protected "protected"
modifier
readonly "readonly"
variable_declaration
identifier "Logger"
variable_declarator
identifier "_logger"
; ";"
property_declaration (+26 nodes collapsed)
property_declaration
modifier
protected "protected"
identifier "TimeSpan"
identifier "MinimumTimeSinceInitialFailure"
accessor_list
{ "{"
accessor_declaration
get "get"
; ";"
accessor_declaration
set "set"
; ";"
} "}"
= "="
member_access_expression
identifier "TimeSpan"
. "."
identifier "Zero"
; ";"
property_declaration (+26 nodes collapsed)
constructor_declaration (+54 nodes collapsed)
method_declaration (+55 nodes collapsed)
method_declaration (+41 nodes collapsed)
method_declaration (+62 nodes collapsed)
method_declaration (+126 nodes collapsed)
method_declaration (+414 nodes collapsed)
method_declaration (+42 nodes collapsed)
method_declaration (+36 nodes collapsed)
method_declaration
modifier
public "public"
modifier
virtual "virtual"
predefined_type "void"
identifier "HandleAsync"
parameter_list
( "("
parameter
generic_name
identifier "ProviderDeletedEvent"
type_argument_list
< "<"
identifier "TProvider"
> ">"
identifier "message"
) ")"
block
{ "{"
expression_statement
invocation_expression all 2:1
member_access_expression all 2:1
identifier "_providerStatusRepository" all 2:1
. "." all 2:1
identifier "DeleteByProviderId" all 2:1
argument_list all 2:1
( "(" all 2:1
argument
member_access_expression
identifier "message"
. "."
identifier "ProviderId"
) ")" all 2:1
; ";" all 2:1
} "}"
} "}"
} "}"