I had an idea. What if we knew the replacement move before hand? Like, we run "this.sampleNoReplace(movePool)" before running all the checks. That way we have a better idea of what to reject. Let's say Tornadus has Acrobatics and Hurricane. Acrobatics would get rejected. But, what if the replacement is Bulk Up, then we would obviously reject Hurricane.