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–255 unchanged (255 lines)
256 return;
257 }
258
259 for (Enumeration e = properties.propertyNames(); e.hasMoreElements();)
260 {
261 String option = e.nextElement().toString();
262
263 if (!cmd.hasOption(option))
264 {
265 Option opt = getOptions().getOption(option);
266
267 // if the option is part of a group, check if another option of the group has been selected
268
269 // get the value from the properties instance
270 String value = properties.getProperty(option);
271
272 if (opt.hasArg())
273 {
274 if (opt.getValues() == null || opt.getValues().length == 0)
…lines 275–425 unchanged (151 lines)

After

…lines 1–256 unchanged (256 lines)
257 }
258
259 for (Enumeration e = properties.propertyNames(); e.hasMoreElements();)
260 {
261 String option = e.nextElement().toString();
262
263 Option opt = options.getOption(option);
264 if (opt == null)
265 {
266 throw new UnrecognizedOptionException("Default option wasn't defined", option);
267 }
268
269 // if the option is part of a group, check if another option of the group has been selected
270 OptionGroup group = options.getOptionGroup(opt);
271 boolean selected = group != null && group.getSelected() != null;
272
273 if (!cmd.hasOption(option) && !selected)
274 {
275 // get the value from the properties instance
276 String value = properties.getProperty(option);
277
278 if (opt.hasArg())
279 {
280 if (opt.getValues() == null || opt.getValues().length == 0)
281 {
…lines 282–431 unchanged (150 lines)

Before

program
block_comment "/**\n * Licensed to the Apache Software Foundation (ASF) unde"...
package_declaration
package "package"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "apache"
. "."
identifier "commons"
. "."
identifier "cli"
; ";"
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 "Arrays"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Enumeration"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Iterator"
; ";"
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 "ListIterator"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Properties"
; ";"
block_comment "/**\n * <code>Parser</code> creates {@link CommandLine}s.\n *\n"...
class_declaration
modifiers
public "public"
abstract "abstract"
class "class"
identifier "Parser"
super_interfaces
implements "implements"
type_list
type_identifier "CommandLineParser"
class_body
{ "{"
block_comment "/** commandline instance */"
field_declaration
modifiers
protected "protected"
type_identifier "CommandLine"
variable_declarator
identifier "cmd"
; ";"
block_comment "/** current Options */"
field_declaration
modifiers
private "private"
type_identifier "Options"
variable_declarator
identifier "options"
; ";"
block_comment "/** list of required options strings */"
field_declaration
modifiers
private "private"
type_identifier "List"
variable_declarator
identifier "requiredOptions"
; ";"
method_declaration (+46 nodes collapsed)
method_declaration
modifiers
protected "protected"
type_identifier "Options"
identifier "getOptions"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
identifier "options"
; ";"
} "}"
method_declaration
modifiers
protected "protected"
type_identifier "List"
identifier "getRequiredOptions"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
identifier "requiredOptions"
; ";"
} "}"
block_comment "/**\n * Subclasses must implement this method to reduce\n "...
method_declaration (+32 nodes collapsed)
block_comment "/**\n * Parses the specified <code>arguments</code> based"...
method_declaration (+40 nodes collapsed)
block_comment "/**\n * Parse the arguments according to the specified op"...
method_declaration (+44 nodes collapsed)
block_comment "/**\n * Parses the specified <code>arguments</code>\n "...
method_declaration (+44 nodes collapsed)
block_comment "/**\n * Parse the arguments according to the specified op"...
method_declaration (+555 nodes collapsed)
block_comment "/**\n * Sets the values of Options using the values in <c"...
method_declaration
modifiers
protected "protected"
void_type "void"
identifier "processProperties"
formal_parameters
( "("
formal_parameter
type_identifier "Properties"
identifier "properties"
) ")"
throws
throws "throws"
type_identifier "ParseException"
block
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "properties"
== "=="
null_literal "null"
) ")"
block
{ "{"
return_statement
return "return"
; ";"
} "}"
for_statement
for "for"
( "("
local_variable_declaration
type_identifier "Enumeration"
variable_declarator
identifier "e"
= "="
method_invocation
identifier "properties"
. "."
identifier "propertyNames"
argument_list
( "("
) ")"
; ";"
method_invocation
identifier "e"
. "."
identifier "hasMoreElements"
argument_list
( "("
) ")"
; ";"
) ")"
block
{ "{"
local_variable_declaration
type_identifier "String"
variable_declarator
identifier "option"
= "="
method_invocation
method_invocation
identifier "e"
. "."
identifier "nextElement"
argument_list
( "("
) ")"
. "."
identifier "toString"
argument_list
( "("
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
unary_expression
! "!"
method_invocation
identifier "cmd"
. "."
identifier "hasOption"
argument_list
( "("
identifier "option"
) ")"
) ")"
block
{ "{"
local_variable_declaration
type_identifier "Option"
variable_declarator
identifier "opt"
= "="
method_invocation any 2:1
method_invocation any 2:1
identifier "getOptions"
argument_list
( "("
) ")"
. "."
identifier "getOption"
argument_list
( "("
identifier "option"
) ")"
; ";"
line_comment "// if the option is part of a group, check if another option"...
line_comment "// get the value from the properties instance"
local_variable_declaration
type_identifier "String"
variable_declarator
identifier "value"
= "="
method_invocation
identifier "properties"
. "."
identifier "getProperty"
argument_list
( "("
identifier "option"
) ")"
; ";"
if_statement (+131 nodes collapsed)
expression_statement
method_invocation
identifier "cmd"
. "."
identifier "addOption"
argument_list
( "("
identifier "opt"
) ")"
; ";"
expression_statement
method_invocation
identifier "updateRequiredOptions"
argument_list
( "("
identifier "opt"
) ")"
; ";"
} "}"
} "}"
} "}"
block_comment "/**\n * Throws a {@link MissingOptionException} if all of"...
method_declaration (+50 nodes collapsed)
block_comment "/**\n * <p>Process the argument values for the specified "...
method_declaration (+185 nodes collapsed)
block_comment "/**\n * Process the Option specified by <code>arg</code> "...
method_declaration (+144 nodes collapsed)
block_comment "/**\n * Removes the option or its group from the list of "...
method_declaration (+136 nodes collapsed)
} "}"

After

program
block_comment "/**\n * Licensed to the Apache Software Foundation (ASF) unde"...
package_declaration
package "package"
scoped_identifier
scoped_identifier
scoped_identifier
identifier "org"
. "."
identifier "apache"
. "."
identifier "commons"
. "."
identifier "cli"
; ";"
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 "Arrays"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Enumeration"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Iterator"
; ";"
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 "ListIterator"
; ";"
import_declaration
import "import"
scoped_identifier
scoped_identifier
identifier "java"
. "."
identifier "util"
. "."
identifier "Properties"
; ";"
block_comment "/**\n * <code>Parser</code> creates {@link CommandLine}s.\n *\n"...
class_declaration
modifiers
public "public"
abstract "abstract"
class "class"
identifier "Parser"
super_interfaces
implements "implements"
type_list
type_identifier "CommandLineParser"
class_body
{ "{"
block_comment "/** commandline instance */"
field_declaration
modifiers
protected "protected"
type_identifier "CommandLine"
variable_declarator
identifier "cmd"
; ";"
block_comment "/** current Options */"
field_declaration
modifiers
private "private"
type_identifier "Options"
variable_declarator
identifier "options"
; ";"
block_comment "/** list of required options strings */"
field_declaration
modifiers
private "private"
type_identifier "List"
variable_declarator
identifier "requiredOptions"
; ";"
method_declaration (+46 nodes collapsed)
method_declaration
modifiers
protected "protected"
type_identifier "Options"
identifier "getOptions"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
identifier "options"
; ";"
} "}"
method_declaration
modifiers
protected "protected"
type_identifier "List"
identifier "getRequiredOptions"
formal_parameters
( "("
) ")"
block
{ "{"
return_statement
return "return"
identifier "requiredOptions"
; ";"
} "}"
block_comment "/**\n * Subclasses must implement this method to reduce\n "...
method_declaration (+32 nodes collapsed)
block_comment "/**\n * Parses the specified <code>arguments</code> based"...
method_declaration (+40 nodes collapsed)
block_comment "/**\n * Parse the arguments according to the specified op"...
method_declaration (+44 nodes collapsed)
block_comment "/**\n * Parses the specified <code>arguments</code>\n "...
method_declaration (+44 nodes collapsed)
block_comment "/**\n * Parse the arguments according to the specified op"...
method_declaration (+555 nodes collapsed)
block_comment "/**\n * Sets the values of Options using the values in <c"...
method_declaration
modifiers
protected "protected"
void_type "void"
identifier "processProperties"
formal_parameters
( "("
formal_parameter
type_identifier "Properties"
identifier "properties"
) ")"
throws
throws "throws"
type_identifier "ParseException"
block
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "properties"
== "=="
null_literal "null"
) ")"
block
{ "{"
return_statement
return "return"
; ";"
} "}"
for_statement
for "for"
( "("
local_variable_declaration
type_identifier "Enumeration"
variable_declarator
identifier "e"
= "="
method_invocation
identifier "properties"
. "."
identifier "propertyNames"
argument_list
( "("
) ")"
; ";"
method_invocation
identifier "e"
. "."
identifier "hasMoreElements"
argument_list
( "("
) ")"
; ";"
) ")"
block
{ "{"
local_variable_declaration
type_identifier "String"
variable_declarator
identifier "option"
= "="
method_invocation
method_invocation
identifier "e"
. "."
identifier "nextElement"
argument_list
( "("
) ")"
. "."
identifier "toString"
argument_list
( "("
) ")"
; ";"
local_variable_declaration
type_identifier "Option"
variable_declarator
identifier "opt"
= "="
method_invocation any 2:1
identifier "options"
. "."
identifier "getOption"
argument_list
( "("
identifier "option"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "opt"
== "=="
null_literal "null"
) ")"
block
{ "{"
throw_statement
throw "throw"
object_creation_expression
new "new"
type_identifier "UnrecognizedOptionException"
argument_list
( "("
string_literal
" "\""
string_fragment "Default option wasn't defined"
" "\""
, ","
identifier "option"
) ")"
; ";"
} "}"
line_comment "// if the option is part of a group, check if another option"...
local_variable_declaration
type_identifier "OptionGroup"
variable_declarator
identifier "group"
= "="
method_invocation
identifier "options"
. "."
identifier "getOptionGroup"
argument_list
( "("
identifier "opt"
) ")"
; ";"
local_variable_declaration
boolean_type "boolean"
variable_declarator
identifier "selected"
= "="
binary_expression
binary_expression
identifier "group"
!= "!="
null_literal "null"
&& "&&"
binary_expression
method_invocation
identifier "group"
. "."
identifier "getSelected"
argument_list
( "("
) ")"
!= "!="
null_literal "null"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
unary_expression
! "!"
method_invocation
identifier "cmd"
. "."
identifier "hasOption"
argument_list
( "("
identifier "option"
) ")"
&& "&&"
unary_expression
! "!"
identifier "selected"
) ")"
block
{ "{"
line_comment "// get the value from the properties instance"
local_variable_declaration
type_identifier "String"
variable_declarator
identifier "value"
= "="
method_invocation
identifier "properties"
. "."
identifier "getProperty"
argument_list
( "("
identifier "option"
) ")"
; ";"
if_statement (+131 nodes collapsed)
expression_statement
method_invocation
identifier "cmd"
. "."
identifier "addOption"
argument_list
( "("
identifier "opt"
) ")"
; ";"
expression_statement
method_invocation
identifier "updateRequiredOptions"
argument_list
( "("
identifier "opt"
) ")"
; ";"
} "}"
} "}"
} "}"
block_comment "/**\n * Throws a {@link MissingOptionException} if all of"...
method_declaration (+50 nodes collapsed)
block_comment "/**\n * <p>Process the argument values for the specified "...
method_declaration (+185 nodes collapsed)
block_comment "/**\n * Process the Option specified by <code>arg</code> "...
method_declaration (+144 nodes collapsed)
block_comment "/**\n * Removes the option or its group from the list of "...
method_declaration (+136 nodes collapsed)
} "}"