code: func PGN(r io.Reader) (func(*Game), error) {
  	b, err := ioutil.ReadAll(r)
  	if err != nil {
  		return nil, err
  	}
  	game, err := decodePGN(string(b))
  	if err != nil {
  		return nil, err
  	}
  	return func(g *Game) {
  		g.copy(game)
  	}, nil
  }
docs: // PGN takes a reader and returns a function that updates
  // the game to reflect the PGN data.  The PGN can use any
  // move notation supported by this package.  The returned
  // function is designed to be used in the NewGame constructor.
  // An error is returned if there is a problem parsing the PGN data.