So I was fixing the "bug" with binaryOperation(), and made changes so that new and old tests passed, except one:

This doesn't really make sense to me because and() and the contains() I'm implementing now are similar in that they both return booleans. We already established that the contains() function should only return booleans and instead of adding unprocessed array items into the return array. Yet here, the expected result of the and() does the exact thing that we decided is not right.
Should this be fixed or is there a difference between and() and contains() in terms of what they should return that I'm missing here?