private bool TryFinishMove(SquareItem item)
{
MoveType type;
if (!this.IsLegalMoveEnd(item.Square, out type))
return false;
this.MoveEnd = item.Square;
Move move = new Move(this.moveStart, item.Square, type);
this.provider.ProcessMove(move, this.CurrentPlayerColor);
return true;
}