original_docstring: 
          Choose the next species for this player to feed. Must have at least 2 choices for feedings.
          :param watering_hole: the number of tokens at the watering hole
          :type watering_hole: Nat+
          :param players: the states of all players in the game (not including this player)
          :type players: [PlayerState, ...]
          :param own_player: This player's state
          :type own_player: PlayerState
          :return: The player's evolution choice
          :rtype: PlayerFeedingChoice or None
          
docstring: Choose the next species for this player to feed. Must have at least 2 choices for feedings.
docstring_tokens: Choose the next species for this player to feed . Must have at least 2 choices for feedings .
code: def choose_feeding(self, watering_hole, other_players, own_player):
          """
          Choose the next species for this player to feed. Must have at least 2 choices for feedings.
          :param watering_hole: the number of tokens at the watering hole
          :type watering_hole: Nat+
          :param players: the states of all players in the game (not including this player)
          :type players: [PlayerState, ...]
          :param own_player: This player's state
          :type own_player: PlayerState
          :return: The player's evolution choice
          :rtype: PlayerFeedingChoice or None
          """
  
          all_players_states = other_players + [own_player]
          own_index = len(other_players)
          own_species = own_player.get_all_species()
  
          best_species_key = max(
              SpeciesPickKey(species, own_index, all_players_states) for species
              in own_species)
          best_species = best_species_key.species
          best_species_index = own_species.index(best_species)
          best_species_feed_type = best_species_key.feed_type
  
          if best_species_feed_type is SpeciesFeedType.STORE_FAT:
              return PlayerStoreFat(best_species_index,
                                    min(best_species.fat_tissue_need(),
                                        watering_hole))
          if best_species_feed_type is SpeciesFeedType.FEEDABLE_VEG:
              return PlayerFeedVegetarian(best_species_index)
          if best_species_feed_type is SpeciesFeedType.FEEDABLE_CARN:
              return self.choose_target(best_species_index, all_players_states,
                                        own_index)
          if best_species_feed_type is SpeciesFeedType.FORGO_ATTACK:
              return PlayerForgoAttack()
          else:
              return None
code_tokens: def choose_feeding ( self , watering_hole , other_players , own_player ) : all_players_states = other_players + [ own_player ] own_index = len ( other_players ) own_species = own_player . get_all_species ( ) best_species_key = max ( SpeciesPickKey ( species , own_index , all_players_states ) for species in own_species ) best_species = best_species_key . species best_species_index = own_species . index ( best_species ) best_species_feed_type = best_species_key . feed_type if best_species_feed_type is SpeciesFeedType . STORE_FAT : return PlayerStoreFat ( best_species_index , min ( best_species . fat_tissue_need ( ) , watering_hole ) ) if best_species_feed_type is SpeciesFeedType . FEEDABLE_VEG : return PlayerFeedVegetarian ( best_species_index ) if best_species_feed_type is SpeciesFeedType . FEEDABLE_CARN : return self . choose_target ( best_species_index , all_players_states , own_index ) if best_species_feed_type is SpeciesFeedType . FORGO_ATTACK : return PlayerForgoAttack ( ) else : return None
short_docstring: Choose the next species for this player to feed.
short_docstring_tokens: Choose the next species for this player to feed .
comment: """
          Choose the next species for this player to feed. Must have at least 2 choices for feedings.
          :param watering_hole: the number of tokens at the watering hole
          :type watering_hole: Nat+
          :param players: the states of all players in the game (not including this player)
          :type players: [PlayerState, ...]
          :param own_player: This player's state
          :type own_player: PlayerState
          :return: The player's evolution choice
          :rtype: PlayerFeedingChoice or None
          """