This mapping has 1 all-to-all group: 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–47 unchanged (47 lines)
48 $this->cacheFactory = $this->createMock(CacheFactory::class);
49 $this->localCache = $this->createMock(ICache::class);
50 }
51
52 protected function getAppConfig($cached = false): AppConfig {
53 $this->config->method('getSystemValueBool')
54 ->with('cache_app_config', $cached)
55 ->willReturn(true);
56 $this->cacheFactory->method('isLocalCacheAvailable')->willReturn($cached);
57 if ($cached) {
58 $this->cacheFactory->method('withServerVersionPrefix')->willReturnCallback(function (\Closure $closure): void {
59 $closure($this->cacheFactory);
60 });
…lines 61–205 unchanged (145 lines)

After

…lines 1–47 unchanged (47 lines)
48 $this->cacheFactory = $this->createMock(CacheFactory::class);
49 $this->localCache = $this->createMock(ICache::class);
50 }
51
52 protected function getAppConfig($cached = false): AppConfig {
53 $this->config->method('getSystemValueBool')
54 ->with('cache_app_config', true)
55 ->willReturn(true);
56 $this->cacheFactory->method('isLocalCacheAvailable')->willReturn($cached);
57 if ($cached) {
58 $this->cacheFactory->method('withServerVersionPrefix')->willReturnCallback(function (\Closure $closure): void {
59 $closure($this->cacheFactory);
60 });
…lines 61–205 unchanged (145 lines)

Before

program
php_tag "<?php"
declare_statement
declare "declare"
( "("
declare_directive
strict_types "strict_types"
= "="
integer "1"
) ")"
; ";"
comment "/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextc"...
namespace_definition
namespace "namespace"
namespace_name
name "Test"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OC"
\ "\\"
name "AppConfig"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OC"
\ "\\"
name "Config"
\ "\\"
name "ConfigManager"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OC"
\ "\\"
name "Config"
\ "\\"
name "PresetManager"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OC"
\ "\\"
name "Memcache"
\ "\\"
name "Factory"
as "as"
name "CacheFactory"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "DB"
\ "\\"
name "IResult"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "DB"
\ "\\"
name "QueryBuilder"
\ "\\"
name "IExpressionBuilder"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "DB"
\ "\\"
name "QueryBuilder"
\ "\\"
name "IQueryBuilder"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "ICache"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "IConfig"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "IDBConnection"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "Security"
\ "\\"
name "ICrypto"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "PHPUnit"
\ "\\"
name "Framework"
\ "\\"
name "MockObject"
\ "\\"
name "MockObject"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "Psr"
\ "\\"
name "Log"
\ "\\"
name "LoggerInterface"
; ";"
comment "/**\n * Class AppConfigTest\n *\n * @package Test\n */"
class_declaration
class "class"
name "AppConfigTest"
base_clause
extends "extends"
name "TestCase"
declaration_list
{ "{"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "IConfig"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "config"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "IDBConnection"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "connection"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "ConfigManager"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "configManager"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "PresetManager"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "presetManager"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "LoggerInterface"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "logger"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "ICrypto"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "crypto"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "CacheFactory"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "cacheFactory"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "ICache"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "localCache"
; ";"
method_declaration (+215 nodes collapsed)
method_declaration
visibility_modifier
protected "protected"
function "function"
name "getAppConfig"
formal_parameters
( "("
simple_parameter
variable_name
$ "$"
name "cached"
= "="
boolean "false"
) ")"
: ":"
named_type
name "AppConfig"
compound_statement
{ "{"
expression_statement
member_call_expression
member_call_expression
member_call_expression
member_access_expression
variable_name
$ "$"
name "this"
-> "->"
name "config"
-> "->"
name "method"
arguments
( "("
argument
string
' "'"
string_content "getSystemValueBool"
' "'"
) ")"
-> "->"
name "with"
arguments
( "("
argument
string
' "'"
string_content "cache_app_config"
' "'"
, ","
argument
variable_name all 3:1
$ "$" all 3:1
name "cached" all 3:1
) ")"
-> "->"
name "willReturn"
arguments
( "("
argument
boolean "true"
) ")"
; ";"
expression_statement (+29 nodes collapsed)
if_statement (+103 nodes collapsed)
return_statement (+65 nodes collapsed)
} "}"
method_declaration (+322 nodes collapsed)
method_declaration (+310 nodes collapsed)
method_declaration (+490 nodes collapsed)
method_declaration (+499 nodes collapsed)
} "}"

After

program
php_tag "<?php"
declare_statement
declare "declare"
( "("
declare_directive
strict_types "strict_types"
= "="
integer "1"
) ")"
; ";"
comment "/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextc"...
namespace_definition
namespace "namespace"
namespace_name
name "Test"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OC"
\ "\\"
name "AppConfig"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OC"
\ "\\"
name "Config"
\ "\\"
name "ConfigManager"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OC"
\ "\\"
name "Config"
\ "\\"
name "PresetManager"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OC"
\ "\\"
name "Memcache"
\ "\\"
name "Factory"
as "as"
name "CacheFactory"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "DB"
\ "\\"
name "IResult"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "DB"
\ "\\"
name "QueryBuilder"
\ "\\"
name "IExpressionBuilder"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "DB"
\ "\\"
name "QueryBuilder"
\ "\\"
name "IQueryBuilder"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "ICache"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "IConfig"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "IDBConnection"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "OCP"
\ "\\"
name "Security"
\ "\\"
name "ICrypto"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "PHPUnit"
\ "\\"
name "Framework"
\ "\\"
name "MockObject"
\ "\\"
name "MockObject"
; ";"
namespace_use_declaration
use "use"
namespace_use_clause
qualified_name
namespace_name
name "Psr"
\ "\\"
name "Log"
\ "\\"
name "LoggerInterface"
; ";"
comment "/**\n * Class AppConfigTest\n *\n * @package Test\n */"
class_declaration
class "class"
name "AppConfigTest"
base_clause
extends "extends"
name "TestCase"
declaration_list
{ "{"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "IConfig"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "config"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "IDBConnection"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "connection"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "ConfigManager"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "configManager"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "PresetManager"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "presetManager"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "LoggerInterface"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "logger"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "ICrypto"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "crypto"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "CacheFactory"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "cacheFactory"
; ";"
property_declaration
visibility_modifier
private "private"
intersection_type
named_type
name "ICache"
& "&"
named_type
name "MockObject"
property_element
variable_name
$ "$"
name "localCache"
; ";"
method_declaration (+215 nodes collapsed)
method_declaration
visibility_modifier
protected "protected"
function "function"
name "getAppConfig"
formal_parameters
( "("
simple_parameter
variable_name
$ "$"
name "cached"
= "="
boolean "false"
) ")"
: ":"
named_type
name "AppConfig"
compound_statement
{ "{"
expression_statement
member_call_expression
member_call_expression
member_call_expression
member_access_expression
variable_name
$ "$"
name "this"
-> "->"
name "config"
-> "->"
name "method"
arguments
( "("
argument
string
' "'"
string_content "getSystemValueBool"
' "'"
) ")"
-> "->"
name "with"
arguments
( "("
argument
string
' "'"
string_content "cache_app_config"
' "'"
, ","
argument
boolean "true" all 3:1
) ")"
-> "->"
name "willReturn"
arguments
( "("
argument
boolean "true"
) ")"
; ";"
expression_statement (+29 nodes collapsed)
if_statement (+103 nodes collapsed)
return_statement (+65 nodes collapsed)
} "}"
method_declaration (+322 nodes collapsed)
method_declaration (+310 nodes collapsed)
method_declaration (+490 nodes collapsed)
method_declaration (+499 nodes collapsed)
} "}"