code: NodeState<T> follow(StartElement element) {
          assert (element != null);
          for (NodeTransition<T> transition : transitions) {
              if (transition.getTest().matches(element)) {
                  return transition.getTarget();
              }
          }
          return emptyState();
      }
docs: Attempt to process a node event and transition to a new state.  If no suitable
  transition is found, the empty state is returned.
  @param element
  @return the new state, or the empty state