code: func (g *Game) Move(m *Move) error {
  	valid := moveSlice(g.ValidMoves()).find(m)
  	if valid == nil {
  		return fmt.Errorf("chess: invalid move %s", m)
  	}
  	g.moves = append(g.moves, valid)
  	g.pos = g.pos.Update(valid)
  	g.positions = append(g.positions, g.pos)
  	g.updatePosition()
  	return nil
  }
docs: // Move updates the game with the given move.  An error is returned
  // if the move is invalid or the game has already been completed.