I'm a little confused about why this is necessary. It seems like the ```BidirectionalMovements``` class should be handling checking the inverse in its ```equals()``` method, and then you could just do a ```contains()``` check on the list to see if the new one should be added. Or better yet, make your data structure a ```Set``` and then you don't even need the ```contains()``` check