anchor.diff:  
   ** a [classname]`ContainerElementNode` object is added to [classname]`Path` whose `name` is the node name produced by the corresponding value extractor (see <<valueextractordefinition>>).
   The [classname]`ElementKind` of the node is [varname]`ElementKind.CONTAINER_ELEMENT`.
  -`getContainerClass()` returns the type of the container hosting the constraint.
  -`getTypeArgumentIndex()` returns the index of the type argument hosting the constraint, if the element is stored in a generic container.
  +`getContainerClass()` returns the declared type of the container hosting the constraint.
  +`getTypeArgumentIndex()` returns the index of the type argument hosting the constraint.
   ** the property path is considered complete
   --
   
  
positive.code: [tck-testable]
  --
  `BeanNode`, `PropertyNode` and `ContainerElementNode` host `getContainerClass()` and `getTypeArgumentIndex()`.
  If the constrained element is contained in a generic container such as `Optional`, `List` or `Map`,
  the former returns the class of the container and the latter returns the index of the affected type argument.
  --
  
  .Narrow a node to its specific type
  
negative.code: ** [tck-testable]#if the association is a [classname]`List` or an array, the following [classname]`Node` object added contains the index value in [methodname]`getIndex()`.#
  ** [tck-testable]#if the association is a [classname]`Map`, the following [classname]`Node` object added (representing a given map entry) contains the key value in [methodname]`getKey()`#
  ** [tck-testable]#for all [classname]`Iterable` or [classname]`Map`, the following [classname]`Node` object added is marked as `inIterable` ([methodname]`isInIterable()`)#
  ** [tck-testable]#if the traversed object is of a container type (e.g. a `List` or `Map`), the following `Node` object added returns the declared type of the traversed container via `getContainerClass()` and the index of the affected type argument via `getTypeArgumentIndex()`#
  
  [tck-testable]
  --
  