User's Manual

Chapter 2 Using the Signature Test Tool 13
When there are two different access modifiers select the more visible one.
For example, if A is a public int foo, and B is protected int foo, then the
merge into C results into public int foo.
If the elements differ in the final modifier, do not include it If a class is final,
then all of its methods are implicitly final according to Section 8.4.3.3 of The Java
Language Specification, 2nd Editon.
If corresponding elements differ in the static modifier, then declare a conflict.
Element-specific rules are as follows:
If corresponding classes differ in the abstract modifier, then declare a conflict.
Apply the following rules for classes or interfaces and nested classes or interfaces,
where for the purpose of this description, c1 and c2 are corresponding classes
from the input APIs:
If a superclass of c1 is a subclass of a superclass of c2, use the superclass of c1 as
the superclass for the new element. Otherwise, if a superclass of c2 is a subclass of
a superclass of c1, use the superclass of c2 as the superclass for the new element.
If neither of the previous two conditions are possible, then declare a conflict.
For classes or interfaces and nested classes or interfaces, create a combined set of
superinterfaces of the corresponding classes and dismiss duplicates. Use the
combined set for the new element.
For methods and constructors, construct a throws list as follows:
In binary compatibility mode, an empty throws list results independently of
the source lists.
In source compatibility mode, both throws lists are normalized as described in
TABLE 2-3 before they are compared. If the normalized lists are equal, one is
used as the result, otherwise, a conflict is declared.
Methods that differ in the abstract modifier are not included.
If a method result type is not identical a conflict is declared.
If a field value type is not identical a conflict is declared.
If a field element differs in the volatile modifier, it is included.
Process constant field values as follows:
If one of the fields has a constant value and other does not, include the
constant value in the result field.
If both fields have a constant value then declare a conflict if the values are
different, otherwise include the value in the result field.