When debugging a matcher it is convenient to be able to comment out
nested matchers experimentally. This stops working when we have less
than two matchers.
Additionally, the removal of the contraint makes it possible to use
these matchers in generic code.
Does it make sense to return true when there are no inner matchers? I would have thought that that if there are no matchers, nothing would match (so we'd return false)?