docs: def _max_gain_split(self, examples):
          """
          Returns an OnlineInformationGain of the attribute with
          max gain based on `examples`.
          """
          gains = self._new_set_of_gain_counters()
          for example in examples:
              for gain in gains:
                  gain.add(example)
          winner = max(gains, key=lambda gain: gain.get_gain())
          if not winner.get_target_class_counts():
              raise ValueError("Dataset is empty")
          return winner