Returns a filtered version of this definition with no invalid nodes.
A curve is formed of a number of nodes, each of which has an associated date.
To be valid, the curve node dates must be in order from earliest to latest.
Each node has certain rules,
CurveNodeDateOrder, that are used to determine
what happens if the date of one curve node is equal or earlier than the date of the previous node.
Filtering occurs in two stages. The first stage looks at each node in turn. The previous and next
nodes are checked for clash. If clash occurs, then one of the two nodes is dropped according to
the
CurveNodeClashAction "drop" values. The second stage then looks
again at the nodes, and if there are still any invalid nodes, an exception is thrown.
This approach means that in most cases, only those nodes that have fixed dates,
such as futures, need to be annotated with
CurveNodeDateOrder.