code: func FEN(fen string) (func(*Game), error) {
  	pos, err := decodeFEN(fen)
  	if err != nil {
  		return nil, err
  	}
  	return func(g *Game) {
  		g.pos = pos
  		g.positions = []*Position{pos}
  		g.updatePosition()
  	}, nil
  }
docs: // FEN takes a string and returns a function that updates
  // the game to reflect the FEN data.  Since FEN doesn't encode
  // prior moves, the move list will be empty.  The returned
  // function is designed to be used in the NewGame constructor.
  // An error is returned if there is a problem parsing the FEN data.