I know you just moved this, rather that wrote it... but strikes me as an example of unnecessary complexity introduced by predicates. A for loop over `getCausalChain` would be less code and simpler to read. Not suggesting you need to change it in this pull request...