public virtual Move CanMove(BoardUtilities utils, Point origin, Point destination) { Move move = GetValidMove(origin, destination); if (utils.Obstructed(origin, destination)) { move = null; } return(move); }