A concrete combiner implementation that is able to construct an override combination.
An override combination means that nodes in the first node structure take precedence over nodes in the second, or - in other words - nodes of the second structure are only added to the resulting structure if they do not occur in the first one. This is especially suitable for dealing with the properties of configurations that are defined in an {@code override} section of a configuration definition file (hence thename).
This combiner will iterate over the second node hierarchy and find all nodes that are not contained in the first hierarchy; these are added to the result. If a node can be found in both structures, it is checked whether a combination (in a recursive way) can be constructed for the two, which will then be added. Per default, nodes are combined, which occur only once in both structures. This test is implemented in the {@code canCombine()}method.
As is true for the {@link UnionCombiner}, for this combiner list nodes are important. The {@code addListNode()} can be called todeclare certain nodes as list nodes. This has the effect that these nodes will never be combined.
@version $Id: OverrideCombiner.java 1624601 2014-09-12 18:04:36Z oheger $
@since 1.3