code: func NewGame(options ...func(*Game)) *Game {
  	pos, _ := decodeFEN(startFEN)
  	game := &Game{
  		notation:  AlgebraicNotation{},
  		moves:     []*Move{},
  		pos:       pos,
  		positions: []*Position{pos},
  		outcome:   NoOutcome,
  		method:    NoMethod,
  	}
  	for _, f := range options {
  		if f != nil {
  			f(game)
  		}
  	}
  	return game
  }
docs: // NewGame defaults to returning a game in the standard
  // opening position.  Options can be given to configure
  // the game's initial state.