This mapping has 3 all-to-all groups: 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–342 unchanged (342 lines)
343 * @throws IllegalArgumentException if <code>opt</code> is not
344 * a valid character. See Option.
345 */
346 public static Option create(String opt) throws IllegalArgumentException
347 {
348 // create the option
349 Option option = new Option(opt, description);
350
351 // set the option properties
352 option.setLongOpt(longopt);
353 option.setRequired(required);
354 option.setOptionalArg(optionalArg);
355 option.setArgs(numberOfArgs);
356 option.setType(type);
357 option.setValueSeparator(valuesep);
358 option.setArgName(argName);
359 // reset the OptionBuilder properties
360 OptionBuilder.reset();
361
362 // return the Option instance
363 return option;
364 }
365}
366

After

…lines 1–341 unchanged (341 lines)
342 * @return the Option instance
343 * @throws IllegalArgumentException if <code>opt</code> is not
344 * a valid character. See Option.
345 */
346 public static Option create(String opt) throws IllegalArgumentException
347 {
348 Option option = null;
349 try {
350 // create the option
351 option = new Option(opt, description);
352
353 // set the option properties
354 option.setLongOpt(longopt);
355 option.setRequired(required);
356 option.setOptionalArg(optionalArg);
357 option.setArgs(numberOfArgs);
358 option.setType(type);
359 option.setValueSeparator(valuesep);
360 option.setArgName(argName);
361 } finally {
362 // reset the OptionBuilder properties
363 OptionBuilder.reset();
364 }
365
366 // return the Option instance
367 return option;
368 }
369}
370

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"
; ";"
block_comment "/**\n * OptionBuilder allows the user to create Options using"...
class_declaration
modifiers
public "public"
final "final"
class "class"
identifier "OptionBuilder"
class_body
{ "{"
block_comment "/** long option */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "String"
variable_declarator
identifier "longopt"
; ";"
block_comment "/** option description */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "String"
variable_declarator
identifier "description"
; ";"
block_comment "/** argument name */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "String"
variable_declarator
identifier "argName"
; ";"
block_comment "/** is required? */"
field_declaration
modifiers
private "private"
static "static"
boolean_type "boolean"
variable_declarator
identifier "required"
; ";"
block_comment "/** the number of arguments */"
field_declaration
modifiers
private "private"
static "static"
integral_type
int "int"
variable_declarator
identifier "numberOfArgs"
= "="
field_access
identifier "Option"
. "."
identifier "UNINITIALIZED"
; ";"
block_comment "/** option type */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "Object"
variable_declarator
identifier "type"
; ";"
block_comment "/** option can have an optional argument value */"
field_declaration
modifiers
private "private"
static "static"
boolean_type "boolean"
variable_declarator
identifier "optionalArg"
; ";"
block_comment "/** value separator for argument value */"
field_declaration
modifiers
private "private"
static "static"
integral_type
char "char"
variable_declarator
identifier "valuesep"
; ";"
block_comment "/** option builder instance */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "OptionBuilder"
variable_declarator
identifier "instance"
= "="
object_creation_expression
new "new"
type_identifier "OptionBuilder"
argument_list
( "("
) ")"
; ";"
block_comment "/**\n * private constructor to prevent instances being cr"...
constructor_declaration
modifiers
private "private"
identifier "OptionBuilder"
formal_parameters
( "("
) ")"
constructor_body
{ "{"
line_comment "// hide the constructor"
} "}"
block_comment "/**\n * Resets the member variables to their default valu"...
method_declaration (+72 nodes collapsed)
block_comment "/**\n * The next Option created will have the following l"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created will require an argument "...
method_declaration (+25 nodes collapsed)
block_comment "/**\n * The next Option created will require an argument "...
method_declaration (+36 nodes collapsed)
block_comment "/**\n * The next Option created will have the specified a"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created will be required.\n *\n"...
method_declaration (+25 nodes collapsed)
block_comment "/**\n * The next Option created uses <code>sep</code> as "...
method_declaration (+29 nodes collapsed)
block_comment "/**\n * The next Option created uses '<code>=</code>' as "...
method_declaration (+25 nodes collapsed)
block_comment "/**\n * The next Option created will be required if <code"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created can have unlimited argume"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created can have <code>num</code>"...
method_declaration (+29 nodes collapsed)
block_comment "/**\n * The next Option can have an optional argument.\n "...
method_declaration (+34 nodes collapsed)
block_comment "/**\n * The next Option can have an unlimited number of o"...
method_declaration (+37 nodes collapsed)
block_comment "/**\n * The next Option can have the specified number of "...
method_declaration (+38 nodes collapsed)
block_comment "/**\n * The next Option created will have a value that wi"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created will have the specified d"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * Create an Option using the current settings and w"...
method_declaration (+35 nodes collapsed)
block_comment "/**\n * Create an Option using the current settings\n "...
method_declaration (+58 nodes collapsed)
block_comment "/**\n * Create an Option using the current settings and w"...
method_declaration
modifiers
public "public"
static "static"
type_identifier "Option"
identifier "create"
formal_parameters
( "("
formal_parameter
type_identifier "String"
identifier "opt"
) ")"
throws
throws "throws"
type_identifier "IllegalArgumentException"
block
{ "{"
line_comment "// create the option"
local_variable_declaration
type_identifier "Option"
variable_declarator
identifier "option" all 1:2
= "=" all 1:2
object_creation_expression
new "new"
type_identifier "Option"
argument_list
( "("
identifier "opt"
, ","
identifier "description"
) ")"
; ";" all 1:2
line_comment "// set the option properties"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setLongOpt"
argument_list
( "("
identifier "longopt"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setRequired"
argument_list
( "("
identifier "required"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setOptionalArg"
argument_list
( "("
identifier "optionalArg"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setArgs"
argument_list
( "("
identifier "numberOfArgs"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setType"
argument_list
( "("
identifier "type"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setValueSeparator"
argument_list
( "("
identifier "valuesep"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setArgName"
argument_list
( "("
identifier "argName"
) ")"
; ";"
line_comment "// reset the OptionBuilder properties"
expression_statement
method_invocation
identifier "OptionBuilder"
. "."
identifier "reset"
argument_list
( "("
) ")"
; ";"
line_comment "// return the Option instance"
return_statement
return "return"
identifier "option"
; ";"
} "}"
} "}"

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"
; ";"
block_comment "/**\n * OptionBuilder allows the user to create Options using"...
class_declaration
modifiers
public "public"
final "final"
class "class"
identifier "OptionBuilder"
class_body
{ "{"
block_comment "/** long option */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "String"
variable_declarator
identifier "longopt"
; ";"
block_comment "/** option description */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "String"
variable_declarator
identifier "description"
; ";"
block_comment "/** argument name */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "String"
variable_declarator
identifier "argName"
; ";"
block_comment "/** is required? */"
field_declaration
modifiers
private "private"
static "static"
boolean_type "boolean"
variable_declarator
identifier "required"
; ";"
block_comment "/** the number of arguments */"
field_declaration
modifiers
private "private"
static "static"
integral_type
int "int"
variable_declarator
identifier "numberOfArgs"
= "="
field_access
identifier "Option"
. "."
identifier "UNINITIALIZED"
; ";"
block_comment "/** option type */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "Object"
variable_declarator
identifier "type"
; ";"
block_comment "/** option can have an optional argument value */"
field_declaration
modifiers
private "private"
static "static"
boolean_type "boolean"
variable_declarator
identifier "optionalArg"
; ";"
block_comment "/** value separator for argument value */"
field_declaration
modifiers
private "private"
static "static"
integral_type
char "char"
variable_declarator
identifier "valuesep"
; ";"
block_comment "/** option builder instance */"
field_declaration
modifiers
private "private"
static "static"
type_identifier "OptionBuilder"
variable_declarator
identifier "instance"
= "="
object_creation_expression
new "new"
type_identifier "OptionBuilder"
argument_list
( "("
) ")"
; ";"
block_comment "/**\n * private constructor to prevent instances being cr"...
constructor_declaration
modifiers
private "private"
identifier "OptionBuilder"
formal_parameters
( "("
) ")"
constructor_body
{ "{"
line_comment "// hide the constructor"
} "}"
block_comment "/**\n * Resets the member variables to their default valu"...
method_declaration (+72 nodes collapsed)
block_comment "/**\n * The next Option created will have the following l"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created will require an argument "...
method_declaration (+25 nodes collapsed)
block_comment "/**\n * The next Option created will require an argument "...
method_declaration (+36 nodes collapsed)
block_comment "/**\n * The next Option created will have the specified a"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created will be required.\n *\n"...
method_declaration (+25 nodes collapsed)
block_comment "/**\n * The next Option created uses <code>sep</code> as "...
method_declaration (+29 nodes collapsed)
block_comment "/**\n * The next Option created uses '<code>=</code>' as "...
method_declaration (+25 nodes collapsed)
block_comment "/**\n * The next Option created will be required if <code"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created can have unlimited argume"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created can have <code>num</code>"...
method_declaration (+29 nodes collapsed)
block_comment "/**\n * The next Option can have an optional argument.\n "...
method_declaration (+34 nodes collapsed)
block_comment "/**\n * The next Option can have an unlimited number of o"...
method_declaration (+37 nodes collapsed)
block_comment "/**\n * The next Option can have the specified number of "...
method_declaration (+38 nodes collapsed)
block_comment "/**\n * The next Option created will have a value that wi"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * The next Option created will have the specified d"...
method_declaration (+28 nodes collapsed)
block_comment "/**\n * Create an Option using the current settings and w"...
method_declaration (+35 nodes collapsed)
block_comment "/**\n * Create an Option using the current settings\n "...
method_declaration (+58 nodes collapsed)
block_comment "/**\n * Create an Option using the current settings and w"...
method_declaration
modifiers
public "public"
static "static"
type_identifier "Option"
identifier "create"
formal_parameters
( "("
formal_parameter
type_identifier "String"
identifier "opt"
) ")"
throws
throws "throws"
type_identifier "IllegalArgumentException"
block
{ "{"
local_variable_declaration
type_identifier "Option"
variable_declarator
identifier "option" all 1:2
= "=" all 1:2
null_literal "null"
; ";" all 1:2
try_statement
try "try"
block
{ "{"
line_comment "// create the option"
expression_statement
assignment_expression
identifier "option" all 1:2
= "=" all 1:2
object_creation_expression
new "new"
type_identifier "Option"
argument_list
( "("
identifier "opt"
, ","
identifier "description"
) ")"
; ";" all 1:2
line_comment "// set the option properties"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setLongOpt"
argument_list
( "("
identifier "longopt"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setRequired"
argument_list
( "("
identifier "required"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setOptionalArg"
argument_list
( "("
identifier "optionalArg"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setArgs"
argument_list
( "("
identifier "numberOfArgs"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setType"
argument_list
( "("
identifier "type"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setValueSeparator"
argument_list
( "("
identifier "valuesep"
) ")"
; ";"
expression_statement
method_invocation
identifier "option"
. "."
identifier "setArgName"
argument_list
( "("
identifier "argName"
) ")"
; ";"
} "}"
finally_clause
finally "finally"
block
{ "{"
line_comment "// reset the OptionBuilder properties"
expression_statement
method_invocation
identifier "OptionBuilder"
. "."
identifier "reset"
argument_list
( "("
) ")"
; ";"
} "}"
line_comment "// return the Option instance"
return_statement
return "return"
identifier "option"
; ";"
} "}"
} "}"