There are better ways to structure the matchers to meet the above-mentioned requirement, but I was just doing a pass to get things working and didn't have time to do the cleanup everywhere (using `foldLeft` or `reduce` with `and` would probably be cleaner).