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–293 unchanged (293 lines)
294 }
295
296 boolean matchesLetter() {
297 if (isEmpty())
298 return false;
299 char c = input[pos];
300 return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
301 }
302
303 boolean matchesDigit() {
304 if (isEmpty())
305 return false;
306 char c = input[pos];
…lines 307–397 unchanged (91 lines)

After

…lines 1–293 unchanged (293 lines)
294 }
295
296 boolean matchesLetter() {
297 if (isEmpty())
298 return false;
299 char c = input[pos];
300 return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || Character.isLetter(c);
301 }
302
303 boolean matchesDigit() {
304 if (isEmpty())
305 return false;
306 char c = input[pos];
…lines 307–397 unchanged (91 lines)

Before

program
package_declaration
package "package"
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "parser"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "helper"
. "."
identifier "Validate"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Arrays"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Locale"
; ";"
block_comment "/**\n CharacterReader consumes tokens off a string. To replac"...
class_declaration
modifiers
final "final"
class "class"
identifier "CharacterReader"
class_body
{ "{"
field_declaration
modifiers
static "static"
final "final"
integral_type
char "char"
variable_declarator
identifier "EOF"
= "="
cast_expression
( "("
integral_type
char "char"
) ")"
unary_expression
- "-"
decimal_integer_literal "1"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
integral_type
int "int"
variable_declarator
identifier "maxCacheLen"
= "="
decimal_integer_literal "12"
; ";"
field_declaration
modifiers
private "private"
final "final"
array_type
integral_type
char "char"
dimensions
[ "["
] "]"
variable_declarator
identifier "input"
; ";"
field_declaration
modifiers
private "private"
final "final"
integral_type
int "int"
variable_declarator
identifier "length"
; ";"
field_declaration
modifiers
private "private"
integral_type
int "int"
variable_declarator
identifier "pos"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
modifiers
private "private"
integral_type
int "int"
variable_declarator
identifier "mark"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
modifiers
private "private"
final "final"
array_type
type_identifier "String"
dimensions
[ "["
] "]"
variable_declarator
identifier "stringCache"
= "="
array_creation_expression
new "new"
type_identifier "String"
dimensions_expr
[ "["
decimal_integer_literal "512"
] "]"
; ";"
line_comment "// holds reused strings in this doc, to lessen garbage"
constructor_declaration (+51 nodes collapsed)
method_declaration
integral_type
int "int"
identifier "pos"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
identifier "pos"
; ";"
} "}"
method_declaration
boolean_type "boolean"
identifier "isEmpty"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
binary_expression
identifier "pos"
>= ">="
identifier "length"
; ";"
} "}"
method_declaration (+26 nodes collapsed)
method_declaration (+39 nodes collapsed)
method_declaration
void_type "void"
identifier "unconsume"
formal_parameters
( "("
) ")"
block
{ "{"
expression_statement
update_expression
identifier "pos"
-- "--"
; ";"
} "}"
method_declaration
void_type "void"
identifier "advance"
formal_parameters
( "("
) ")"
block
{ "{"
expression_statement
update_expression
identifier "pos"
++ "++"
; ";"
} "}"
method_declaration
void_type "void"
identifier "mark"
formal_parameters
( "("
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "mark"
= "="
identifier "pos"
; ";"
} "}"
method_declaration
void_type "void"
identifier "rewindToMark"
formal_parameters
( "("
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "pos"
= "="
identifier "mark"
; ";"
} "}"
method_declaration (+25 nodes collapsed)
block_comment "/**\n * Returns the number of characters between the curr"...
method_declaration (+64 nodes collapsed)
block_comment "/**\n * Returns the number of characters between the curr"...
method_declaration (+208 nodes collapsed)
method_declaration (+76 nodes collapsed)
method_declaration (+75 nodes collapsed)
method_declaration (+124 nodes collapsed)
method_declaration (+117 nodes collapsed)
method_declaration (+126 nodes collapsed)
method_declaration (+156 nodes collapsed)
method_declaration (+36 nodes collapsed)
method_declaration (+97 nodes collapsed)
method_declaration (+148 nodes collapsed)
method_declaration (+112 nodes collapsed)
method_declaration (+79 nodes collapsed)
method_declaration (+33 nodes collapsed)
method_declaration (+93 nodes collapsed)
method_declaration (+126 nodes collapsed)
method_declaration (+70 nodes collapsed)
method_declaration (+46 nodes collapsed)
method_declaration
boolean_type "boolean"
identifier "matchesLetter"
formal_parameters
( "("
) ")"
block
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "isEmpty"
argument_list
( "("
) ")"
) ")"
return_statement
return "return"
false "false"
; ";"
local_variable_declaration
integral_type
char "char"
variable_declarator
identifier "c"
= "="
array_access
identifier "input"
[ "["
identifier "pos"
] "]"
; ";"
return_statement
return "return"
binary_expression any 1:2
parenthesized_expression
( "("
binary_expression
binary_expression
identifier "c"
>= ">="
character_literal "'A'"
&& "&&"
binary_expression
identifier "c"
<= "<="
character_literal "'Z'"
) ")"
|| "||"
parenthesized_expression
( "("
binary_expression
binary_expression
identifier "c"
>= ">="
character_literal "'a'"
&& "&&"
binary_expression
identifier "c"
<= "<="
character_literal "'z'"
) ")"
; ";"
} "}"
method_declaration (+51 nodes collapsed)
method_declaration (+50 nodes collapsed)
method_declaration (+50 nodes collapsed)
method_declaration (+80 nodes collapsed)
method_declaration (+31 nodes collapsed)
block_comment "/**\n * Caches short strings, as a flywheel pattern, to r"...
method_declaration (+267 nodes collapsed)
block_comment "/**\n * Check if the value of the provided range equals t"...
method_declaration (+121 nodes collapsed)
} "}"

After

program
package_declaration
package "package"
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "parser"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "jsoup"
. "."
identifier "helper"
. "."
identifier "Validate"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Arrays"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Locale"
; ";"
block_comment "/**\n CharacterReader consumes tokens off a string. To replac"...
class_declaration
modifiers
final "final"
class "class"
identifier "CharacterReader"
class_body
{ "{"
field_declaration
modifiers
static "static"
final "final"
integral_type
char "char"
variable_declarator
identifier "EOF"
= "="
cast_expression
( "("
integral_type
char "char"
) ")"
unary_expression
- "-"
decimal_integer_literal "1"
; ";"
field_declaration
modifiers
private "private"
static "static"
final "final"
integral_type
int "int"
variable_declarator
identifier "maxCacheLen"
= "="
decimal_integer_literal "12"
; ";"
field_declaration
modifiers
private "private"
final "final"
array_type
integral_type
char "char"
dimensions
[ "["
] "]"
variable_declarator
identifier "input"
; ";"
field_declaration
modifiers
private "private"
final "final"
integral_type
int "int"
variable_declarator
identifier "length"
; ";"
field_declaration
modifiers
private "private"
integral_type
int "int"
variable_declarator
identifier "pos"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
modifiers
private "private"
integral_type
int "int"
variable_declarator
identifier "mark"
= "="
decimal_integer_literal "0"
; ";"
field_declaration
modifiers
private "private"
final "final"
array_type
type_identifier "String"
dimensions
[ "["
] "]"
variable_declarator
identifier "stringCache"
= "="
array_creation_expression
new "new"
type_identifier "String"
dimensions_expr
[ "["
decimal_integer_literal "512"
] "]"
; ";"
line_comment "// holds reused strings in this doc, to lessen garbage"
constructor_declaration (+51 nodes collapsed)
method_declaration
integral_type
int "int"
identifier "pos"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
identifier "pos"
; ";"
} "}"
method_declaration
boolean_type "boolean"
identifier "isEmpty"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
binary_expression
identifier "pos"
>= ">="
identifier "length"
; ";"
} "}"
method_declaration (+26 nodes collapsed)
method_declaration (+39 nodes collapsed)
method_declaration
void_type "void"
identifier "unconsume"
formal_parameters
( "("
) ")"
block
{ "{"
expression_statement
update_expression
identifier "pos"
-- "--"
; ";"
} "}"
method_declaration
void_type "void"
identifier "advance"
formal_parameters
( "("
) ")"
block
{ "{"
expression_statement
update_expression
identifier "pos"
++ "++"
; ";"
} "}"
method_declaration
void_type "void"
identifier "mark"
formal_parameters
( "("
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "mark"
= "="
identifier "pos"
; ";"
} "}"
method_declaration
void_type "void"
identifier "rewindToMark"
formal_parameters
( "("
) ")"
block
{ "{"
expression_statement
assignment_expression
identifier "pos"
= "="
identifier "mark"
; ";"
} "}"
method_declaration (+25 nodes collapsed)
block_comment "/**\n * Returns the number of characters between the curr"...
method_declaration (+64 nodes collapsed)
block_comment "/**\n * Returns the number of characters between the curr"...
method_declaration (+208 nodes collapsed)
method_declaration (+76 nodes collapsed)
method_declaration (+75 nodes collapsed)
method_declaration (+124 nodes collapsed)
method_declaration (+117 nodes collapsed)
method_declaration (+126 nodes collapsed)
method_declaration (+156 nodes collapsed)
method_declaration (+36 nodes collapsed)
method_declaration (+97 nodes collapsed)
method_declaration (+148 nodes collapsed)
method_declaration (+112 nodes collapsed)
method_declaration (+79 nodes collapsed)
method_declaration (+33 nodes collapsed)
method_declaration (+93 nodes collapsed)
method_declaration (+126 nodes collapsed)
method_declaration (+70 nodes collapsed)
method_declaration (+46 nodes collapsed)
method_declaration
boolean_type "boolean"
identifier "matchesLetter"
formal_parameters
( "("
) ")"
block
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
method_invocation
identifier "isEmpty"
argument_list
( "("
) ")"
) ")"
return_statement
return "return"
false "false"
; ";"
local_variable_declaration
integral_type
char "char"
variable_declarator
identifier "c"
= "="
array_access
identifier "input"
[ "["
identifier "pos"
] "]"
; ";"
return_statement
return "return"
binary_expression any 1:2
binary_expression any 1:2
parenthesized_expression
( "("
binary_expression
binary_expression
identifier "c"
>= ">="
character_literal "'A'"
&& "&&"
binary_expression
identifier "c"
<= "<="
character_literal "'Z'"
) ")"
|| "||"
parenthesized_expression
( "("
binary_expression
binary_expression
identifier "c"
>= ">="
character_literal "'a'"
&& "&&"
binary_expression
identifier "c"
<= "<="
character_literal "'z'"
) ")"
|| "||"
method_invocation
identifier "Character"
. "."
identifier "isLetter"
argument_list
( "("
identifier "c"
) ")"
; ";"
} "}"
method_declaration (+51 nodes collapsed)
method_declaration (+50 nodes collapsed)
method_declaration (+50 nodes collapsed)
method_declaration (+80 nodes collapsed)
method_declaration (+31 nodes collapsed)
block_comment "/**\n * Caches short strings, as a flywheel pattern, to r"...
method_declaration (+267 nodes collapsed)
block_comment "/**\n * Check if the value of the provided range equals t"...
method_declaration (+121 nodes collapsed)
} "}"