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–187 unchanged (187 lines)
188 }
189
190 public static boolean isJSIdentifier(String s) {
191 int length = s.length();
192
193 if (length == 0 ||
194 !Character.isJavaIdentifierStart(s.charAt(0))) {
195 return false;
196 }
197
198 for (int i = 1; i < length; i++) {
199 if (
200 !Character.isJavaIdentifierPart(s.charAt(i))) {
201 return false;
202 }
203 }
204
205 return true;
206 }
207}
208

After

…lines 1–187 unchanged (187 lines)
188 }
189
190 public static boolean isJSIdentifier(String s) {
191 int length = s.length();
192
193 if (length == 0 ||
194 Character.isIdentifierIgnorable(s.charAt(0)) ||
195 !Character.isJavaIdentifierStart(s.charAt(0))) {
196 return false;
197 }
198
199 for (int i = 1; i < length; i++) {
200 if (Character.isIdentifierIgnorable(s.charAt(i)) ||
201 !Character.isJavaIdentifierPart(s.charAt(i))) {
202 return false;
203 }
204 }
205
206 return true;
207 }
208}
209

Before

program
block_comment "/*\n *\n * ***** BEGIN LICENSE BLOCK *****\n * Version: MPL 1.1"...
package_declaration
package "package"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
; ";"
block_comment "/**\n * This class implements the JavaScript scanner.\n *\n * I"...
class_declaration
modifiers
public "public"
class "class"
identifier "TokenStream"
class_body
{ "{"
method_declaration (+2276 nodes collapsed)
method_declaration
modifiers
public "public"
static "static"
boolean_type "boolean"
identifier "isJSIdentifier"
formal_parameters
( "("
formal_parameter
type_identifier "String"
identifier "s"
) ")"
block
{ "{"
local_variable_declaration
integral_type
int "int"
variable_declarator
identifier "length"
= "="
method_invocation
identifier "s"
. "."
identifier "length"
argument_list
( "("
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression any 2:3
binary_expression any 2:3
identifier "length"
== "=="
decimal_integer_literal "0"
|| "||"
unary_expression
! "!"
method_invocation
identifier "Character"
. "."
identifier "isJavaIdentifierStart"
argument_list
( "("
method_invocation
identifier "s"
. "."
identifier "charAt"
argument_list
( "("
decimal_integer_literal "0"
) ")"
) ")"
) ")"
block
{ "{"
return_statement
return "return"
false "false"
; ";"
} "}"
for_statement
for "for"
( "("
local_variable_declaration
integral_type
int "int"
variable_declarator
identifier "i"
= "="
decimal_integer_literal "1"
; ";"
binary_expression
identifier "i"
< "<"
identifier "length"
; ";"
update_expression
identifier "i"
++ "++"
) ")"
block
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
unary_expression
! "!"
method_invocation
identifier "Character"
. "."
identifier "isJavaIdentifierPart"
argument_list
( "("
method_invocation
identifier "s"
. "."
identifier "charAt"
argument_list
( "("
identifier "i"
) ")"
) ")"
) ")"
block
{ "{"
return_statement
return "return"
false "false"
; ";"
} "}"
} "}"
return_statement
return "return"
true "true"
; ";"
} "}"
} "}"

After

program
block_comment "/*\n *\n * ***** BEGIN LICENSE BLOCK *****\n * Version: MPL 1.1"...
package_declaration
package "package"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "com"
. "."
identifier "google"
. "."
identifier "javascript"
. "."
identifier "rhino"
; ";"
block_comment "/**\n * This class implements the JavaScript scanner.\n *\n * I"...
class_declaration
modifiers
public "public"
class "class"
identifier "TokenStream"
class_body
{ "{"
method_declaration (+2276 nodes collapsed)
method_declaration
modifiers
public "public"
static "static"
boolean_type "boolean"
identifier "isJSIdentifier"
formal_parameters
( "("
formal_parameter
type_identifier "String"
identifier "s"
) ")"
block
{ "{"
local_variable_declaration
integral_type
int "int"
variable_declarator
identifier "length"
= "="
method_invocation
identifier "s"
. "."
identifier "length"
argument_list
( "("
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression any 2:3
binary_expression any 2:3
binary_expression any 2:3
identifier "length"
== "=="
decimal_integer_literal "0"
|| "||"
method_invocation
identifier "Character"
. "."
identifier "isIdentifierIgnorable"
argument_list
( "("
method_invocation
identifier "s"
. "."
identifier "charAt"
argument_list
( "("
decimal_integer_literal "0"
) ")"
) ")"
|| "||"
unary_expression
! "!"
method_invocation
identifier "Character"
. "."
identifier "isJavaIdentifierStart"
argument_list
( "("
method_invocation
identifier "s"
. "."
identifier "charAt"
argument_list
( "("
decimal_integer_literal "0"
) ")"
) ")"
) ")"
block
{ "{"
return_statement
return "return"
false "false"
; ";"
} "}"
for_statement
for "for"
( "("
local_variable_declaration
integral_type
int "int"
variable_declarator
identifier "i"
= "="
decimal_integer_literal "1"
; ";"
binary_expression
identifier "i"
< "<"
identifier "length"
; ";"
update_expression
identifier "i"
++ "++"
) ")"
block
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
method_invocation
identifier "Character"
. "."
identifier "isIdentifierIgnorable"
argument_list
( "("
method_invocation
identifier "s"
. "."
identifier "charAt"
argument_list
( "("
identifier "i"
) ")"
) ")"
|| "||"
unary_expression
! "!"
method_invocation
identifier "Character"
. "."
identifier "isJavaIdentifierPart"
argument_list
( "("
method_invocation
identifier "s"
. "."
identifier "charAt"
argument_list
( "("
identifier "i"
) ")"
) ")"
) ")"
block
{ "{"
return_statement
return "return"
false "false"
; ";"
} "}"
} "}"
return_statement
return "return"
true "true"
; ";"
} "}"
} "}"