This mapping has 1 multi-map group: 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–913 unchanged (913 lines)
914 // later. So we won't be able to collapse its properties.
915 if (parent != null && parent.shouldKeepKeys()) {
916 return false;
917 }
918
919 // If this is aliased, then its properties can't be collapsed either.
920 if (type != Type.FUNCTION && aliasingGets > 0) {
921 return false;
922 }
923
924 return (parent == null || parent.canCollapseUnannotatedChildNames());
925 }
926
…lines 927–1081 unchanged (155 lines)

After

…lines 1–913 unchanged (913 lines)
914 // later. So we won't be able to collapse its properties.
915 if (parent != null && parent.shouldKeepKeys()) {
916 return false;
917 }
918
919 // If this is aliased, then its properties can't be collapsed either.
920 if (aliasingGets > 0) {
921 return false;
922 }
923
924 return (parent == null || parent.canCollapseUnannotatedChildNames());
925 }
926
…lines 927–1081 unchanged (155 lines)

Before

program
block_comment "/*\n * Copyright 2006 The Closure Compiler Authors.\n *\n * Lic"...
package_declaration
package "package"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "jscomp"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "common"
. "."
identifier "base"
. "."
identifier "Preconditions"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "common"
. "."
identifier "base"
. "."
identifier "Predicate"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "jscomp"
. "."
identifier "NodeTraversal"
. "."
identifier "AbstractPostOrderCallback"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
. "."
identifier "JSDocInfo"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
. "."
identifier "Node"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
. "."
identifier "Token"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
. "."
identifier "TokenStream"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "ArrayList"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "HashMap"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "LinkedList"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "List"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Map"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Set"
; ";"
block_comment "/**\n * Builds a global namespace of all the objects and thei"...
class_declaration
class "class"
identifier "GlobalNamespace"
class_body
{ "{"
field_declaration
modifiers
private "private"
type_identifier "AbstractCompiler"
variable_declarator
identifier "compiler"
; ";"
field_declaration
modifiers
private "private"
final "final"
type_identifier "Node"
variable_declarator
identifier "root"
; ";"
field_declaration
modifiers
private "private"
final "final"
type_identifier "Node"
variable_declarator
identifier "externsRoot"
; ";"
field_declaration
modifiers
private "private"
boolean_type "boolean"
variable_declarator
identifier "inExterns"
; ";"
field_declaration
modifiers
private "private"
type_identifier "Scope"
variable_declarator
identifier "externsScope"
; ";"
field_declaration
modifiers
private "private"
boolean_type "boolean"
variable_declarator
identifier "generated"
= "="
false "false"
; ";"
block_comment "/** Global namespace tree */"
field_declaration (+24 nodes collapsed)
block_comment "/** Maps names (e.g. \"a.b.c\") to nodes in the global namespa"...
field_declaration (+28 nodes collapsed)
block_comment "/**\n * Creates an instance that may emit warnings when bui"...
constructor_declaration (+26 nodes collapsed)
block_comment "/**\n * Creates an instance that may emit warnings when bui"...
constructor_declaration (+46 nodes collapsed)
block_comment "/**\n * Gets a list of the roots of the forest of the globa"...
method_declaration (+36 nodes collapsed)
block_comment "/**\n * Gets an index of all the global names, indexed by f"...
method_declaration (+38 nodes collapsed)
block_comment "/**\n * If the client adds new nodes to the AST, scan these"...
method_declaration (+58 nodes collapsed)
block_comment "/**\n * A filter that looks for qualified names that contai"...
class_declaration (+178 nodes collapsed)
block_comment "/**\n * Builds the namespace lazily.\n */"
method_declaration (+79 nodes collapsed)
block_comment "/**\n * Determines whether a name reference in a particular"...
method_declaration (+41 nodes collapsed)
block_comment "/**\n * Gets the top variable name from a possibly namespac"...
method_declaration (+52 nodes collapsed)
block_comment "/**\n * Determines whether a variable name reference in a p"...
method_declaration (+84 nodes collapsed)
block_comment "/**\n * Gets whether a scope is the global scope.\n *\n *"...
method_declaration (+27 nodes collapsed)
line_comment "// ---------------------------------------------------------"...
block_comment "/**\n * Builds a tree representation of the global namespac"...
class_declaration (+3151 nodes collapsed)
line_comment "// ---------------------------------------------------------"...
block_comment "/**\n * A name defined in global scope (e.g. \"a\" or \"a.b.c."...
class_declaration
modifiers
static "static"
class "class"
identifier "Name"
class_body
{ "{"
enum_declaration
enum "enum"
identifier "Type"
enum_body
{ "{"
enum_constant
identifier "OBJECTLIT"
, ","
enum_constant
identifier "FUNCTION"
, ","
enum_constant
identifier "OTHER"
, ","
} "}"
field_declaration
modifiers
final "final"
type_identifier "String"
variable_declarator
identifier "name"
; ";"
field_declaration
modifiers
final "final"
type_identifier "Name"
variable_declarator
identifier "parent"
; ";"
field_declaration
generic_type
type_identifier "List"
type_arguments
< "<"
type_identifier "Name"
> ">"
variable_declarator
identifier "props"
; ";"
field_declaration
type_identifier "Ref"
variable_declarator
identifier "declaration"
; ";"
field_declaration
generic_type
type_identifier "List"
type_arguments
< "<"
type_identifier "Ref"
> ">"
variable_declarator
identifier "refs"
; ";"
field_declaration
type_identifier "Type"
variable_declarator
identifier "type"
; ";"
field_declaration
modifiers
private "private"
boolean_type "boolean"
variable_declarator
identifier "isClassOrEnum"
= "="
false "false"
; ";"
field_declaration
modifiers
private "private"
boolean_type "boolean"
variable_declarator
identifier "hasClassOrEnumDescendant"
= "="
false "false"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "globalSets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "localSets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "aliasingGets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "totalGets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "callGets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
boolean_type "boolean"
variable_declarator
identifier "inExterns"
; ";"
field_declaration
type_identifier "JSDocInfo"
variable_declarator
identifier "docInfo"
= "="
null_literal "null"
; ";"
constructor_declaration (+58 nodes collapsed)
method_declaration (+75 nodes collapsed)
method_declaration (+190 nodes collapsed)
method_declaration (+229 nodes collapsed)
method_declaration (+50 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+54 nodes collapsed)
method_declaration
boolean_type "boolean"
identifier "canCollapseUnannotatedChildNames"
formal_parameters
( "("
) ")"
block
{ "{"
if_statement (+31 nodes collapsed)
line_comment "// Don't try to collapse if the one global set is a twin ref"...
line_comment "// We could theoretically handle this case in CollapseProper"...
line_comment "// it's probably not worth the effort."
expression_statement
method_invocation
identifier "Preconditions"
. "."
identifier "checkNotNull"
argument_list
( "("
identifier "declaration"
) ")"
; ";"
if_statement (+22 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
identifier "isClassOrEnum"
) ")"
block
{ "{"
return_statement
return "return"
true "true"
; ";"
} "}"
line_comment "// If this is a key of an aliased object literal, then it wi"...
line_comment "// later. So we won't be able to collapse its properties."
if_statement (+25 nodes collapsed)
line_comment "// If this is aliased, then its properties can't be collapse"...
if_statement
if "if"
parenthesized_expression
( "("
binary_expression any 2:1
binary_expression
identifier "type"
!= "!="
field_access
identifier "Type"
. "."
identifier "FUNCTION"
&& "&&"
binary_expression any 2:1
identifier "aliasingGets"
> ">"
decimal_integer_literal "0"
) ")"
block
{ "{"
return_statement
return "return"
false "false"
; ";"
} "}"
return_statement
return "return"
parenthesized_expression
( "("
binary_expression
binary_expression
identifier "parent"
== "=="
null_literal "null"
|| "||"
method_invocation
identifier "parent"
. "."
identifier "canCollapseUnannotatedChildNames"
argument_list
( "("
) ")"
) ")"
; ";"
} "}"
block_comment "/** Whether this is an object literal that needs to keep its"...
method_declaration (+25 nodes collapsed)
method_declaration (+22 nodes collapsed)
method_declaration (+50 nodes collapsed)
block_comment "/**\n * Determines whether this name is a prefix of at le"...
method_declaration (+22 nodes collapsed)
block_comment "/**\n * Determines whether this is a simple name (as oppo"...
method_declaration
boolean_type "boolean"
identifier "isSimpleName"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
binary_expression
identifier "parent"
== "=="
null_literal "null"
; ";"
} "}"
method_declaration (+76 nodes collapsed)
method_declaration (+33 nodes collapsed)
block_comment "/**\n * Tries to get the doc info for a given declaration"...
method_declaration (+135 nodes collapsed)
} "}"
line_comment "// ---------------------------------------------------------"...
block_comment "/**\n * A global name reference. Contains references to the"...
class_declaration (+498 nodes collapsed)
} "}"

After

program
block_comment "/*\n * Copyright 2006 The Closure Compiler Authors.\n *\n * Lic"...
package_declaration
package "package"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "jscomp"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "common"
. "."
identifier "base"
. "."
identifier "Preconditions"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "common"
. "."
identifier "base"
. "."
identifier "Predicate"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "jscomp"
. "."
identifier "NodeTraversal"
. "."
identifier "AbstractPostOrderCallback"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
. "."
identifier "JSDocInfo"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
. "."
identifier "Node"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
. "."
identifier "Token"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
. "."
identifier "TokenStream"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "ArrayList"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "HashMap"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "LinkedList"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "List"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Map"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Set"
; ";"
block_comment "/**\n * Builds a global namespace of all the objects and thei"...
class_declaration
class "class"
identifier "GlobalNamespace"
class_body
{ "{"
field_declaration
modifiers
private "private"
type_identifier "AbstractCompiler"
variable_declarator
identifier "compiler"
; ";"
field_declaration
modifiers
private "private"
final "final"
type_identifier "Node"
variable_declarator
identifier "root"
; ";"
field_declaration
modifiers
private "private"
final "final"
type_identifier "Node"
variable_declarator
identifier "externsRoot"
; ";"
field_declaration
modifiers
private "private"
boolean_type "boolean"
variable_declarator
identifier "inExterns"
; ";"
field_declaration
modifiers
private "private"
type_identifier "Scope"
variable_declarator
identifier "externsScope"
; ";"
field_declaration
modifiers
private "private"
boolean_type "boolean"
variable_declarator
identifier "generated"
= "="
false "false"
; ";"
block_comment "/** Global namespace tree */"
field_declaration (+24 nodes collapsed)
block_comment "/** Maps names (e.g. \"a.b.c\") to nodes in the global namespa"...
field_declaration (+28 nodes collapsed)
block_comment "/**\n * Creates an instance that may emit warnings when bui"...
constructor_declaration (+26 nodes collapsed)
block_comment "/**\n * Creates an instance that may emit warnings when bui"...
constructor_declaration (+46 nodes collapsed)
block_comment "/**\n * Gets a list of the roots of the forest of the globa"...
method_declaration (+36 nodes collapsed)
block_comment "/**\n * Gets an index of all the global names, indexed by f"...
method_declaration (+38 nodes collapsed)
block_comment "/**\n * If the client adds new nodes to the AST, scan these"...
method_declaration (+58 nodes collapsed)
block_comment "/**\n * A filter that looks for qualified names that contai"...
class_declaration (+178 nodes collapsed)
block_comment "/**\n * Builds the namespace lazily.\n */"
method_declaration (+79 nodes collapsed)
block_comment "/**\n * Determines whether a name reference in a particular"...
method_declaration (+41 nodes collapsed)
block_comment "/**\n * Gets the top variable name from a possibly namespac"...
method_declaration (+52 nodes collapsed)
block_comment "/**\n * Determines whether a variable name reference in a p"...
method_declaration (+84 nodes collapsed)
block_comment "/**\n * Gets whether a scope is the global scope.\n *\n *"...
method_declaration (+27 nodes collapsed)
line_comment "// ---------------------------------------------------------"...
block_comment "/**\n * Builds a tree representation of the global namespac"...
class_declaration (+3151 nodes collapsed)
line_comment "// ---------------------------------------------------------"...
block_comment "/**\n * A name defined in global scope (e.g. \"a\" or \"a.b.c."...
class_declaration
modifiers
static "static"
class "class"
identifier "Name"
class_body
{ "{"
enum_declaration
enum "enum"
identifier "Type"
enum_body
{ "{"
enum_constant
identifier "OBJECTLIT"
, ","
enum_constant
identifier "FUNCTION"
, ","
enum_constant
identifier "OTHER"
, ","
} "}"
field_declaration
modifiers
final "final"
type_identifier "String"
variable_declarator
identifier "name"
; ";"
field_declaration
modifiers
final "final"
type_identifier "Name"
variable_declarator
identifier "parent"
; ";"
field_declaration
generic_type
type_identifier "List"
type_arguments
< "<"
type_identifier "Name"
> ">"
variable_declarator
identifier "props"
; ";"
field_declaration
type_identifier "Ref"
variable_declarator
identifier "declaration"
; ";"
field_declaration
generic_type
type_identifier "List"
type_arguments
< "<"
type_identifier "Ref"
> ">"
variable_declarator
identifier "refs"
; ";"
field_declaration
type_identifier "Type"
variable_declarator
identifier "type"
; ";"
field_declaration
modifiers
private "private"
boolean_type "boolean"
variable_declarator
identifier "isClassOrEnum"
= "="
false "false"
; ";"
field_declaration
modifiers
private "private"
boolean_type "boolean"
variable_declarator
identifier "hasClassOrEnumDescendant"
= "="
false "false"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "globalSets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "localSets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "aliasingGets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "totalGets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
integral_type
int "int"
variable_declarator
identifier "callGets"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
boolean_type "boolean"
variable_declarator
identifier "inExterns"
; ";"
field_declaration
type_identifier "JSDocInfo"
variable_declarator
identifier "docInfo"
= "="
null_literal "null"
; ";"
constructor_declaration (+58 nodes collapsed)
method_declaration (+75 nodes collapsed)
method_declaration (+190 nodes collapsed)
method_declaration (+229 nodes collapsed)
method_declaration (+50 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+54 nodes collapsed)
method_declaration
boolean_type "boolean"
identifier "canCollapseUnannotatedChildNames"
formal_parameters
( "("
) ")"
block
{ "{"
if_statement (+31 nodes collapsed)
line_comment "// Don't try to collapse if the one global set is a twin ref"...
line_comment "// We could theoretically handle this case in CollapseProper"...
line_comment "// it's probably not worth the effort."
expression_statement
method_invocation
identifier "Preconditions"
. "."
identifier "checkNotNull"
argument_list
( "("
identifier "declaration"
) ")"
; ";"
if_statement (+22 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
identifier "isClassOrEnum"
) ")"
block
{ "{"
return_statement
return "return"
true "true"
; ";"
} "}"
line_comment "// If this is a key of an aliased object literal, then it wi"...
line_comment "// later. So we won't be able to collapse its properties."
if_statement (+25 nodes collapsed)
line_comment "// If this is aliased, then its properties can't be collapse"...
if_statement
if "if"
parenthesized_expression
( "("
binary_expression any 2:1
identifier "aliasingGets"
> ">"
decimal_integer_literal "0"
) ")"
block
{ "{"
return_statement
return "return"
false "false"
; ";"
} "}"
return_statement
return "return"
parenthesized_expression
( "("
binary_expression
binary_expression
identifier "parent"
== "=="
null_literal "null"
|| "||"
method_invocation
identifier "parent"
. "."
identifier "canCollapseUnannotatedChildNames"
argument_list
( "("
) ")"
) ")"
; ";"
} "}"
block_comment "/** Whether this is an object literal that needs to keep its"...
method_declaration (+25 nodes collapsed)
method_declaration (+22 nodes collapsed)
method_declaration (+50 nodes collapsed)
block_comment "/**\n * Determines whether this name is a prefix of at le"...
method_declaration (+22 nodes collapsed)
block_comment "/**\n * Determines whether this is a simple name (as oppo"...
method_declaration
boolean_type "boolean"
identifier "isSimpleName"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
binary_expression
identifier "parent"
== "=="
null_literal "null"
; ";"
} "}"
method_declaration (+76 nodes collapsed)
method_declaration (+33 nodes collapsed)
block_comment "/**\n * Tries to get the doc info for a given declaration"...
method_declaration (+135 nodes collapsed)
} "}"
line_comment "// ---------------------------------------------------------"...
block_comment "/**\n * A global name reference. Contains references to the"...
class_declaration (+498 nodes collapsed)
} "}"