Throw exception on illegal moves. Use compiled patterns.