Called at the point each Element starts validation.
If the Element has
already been seen then this function should return false to
indicate that it has already been validated.
If not then the function should return true to indicate that
validation should go ahead.
Subclasses should keep track of elements that they have seen so
as to avoid recursive loops.