def add_result(result)
      raise "invalid result" unless result.class == ICU::Result
      raise "result round number (#{result.round}) inconsistent with number of tournament rounds" if @rounds && result.round > @rounds
      raise "player number (#{result.player}) does not exist" unless @player[result.player]
      return if add_asymmetric_result?(result)
      @player[result.player].add_result(result)
      if result.opponent
        raise "opponent number (#{result.opponent}) does not exist" unless @player[result.opponent]
        @player[result.opponent].add_result(result.reverse)
      end
    end
def add_result(result)
      raise "invalid result" unless result.class == ICU::Result
      raise "result round number (#{result.round}) inconsistent with number of tournament rounds" if @rounds && result.round > @rounds
      raise "player number (#{result.player}) does not exist" unless @player[result.player]
      return if add_asymmetric_result?(result)
      @player[result.player].add_result(result)
      if result.opponent
        raise "opponent number (#{result.opponent}) does not exist" unless @player[result.opponent]
        @player[result.opponent].add_result(result.reverse)
      end
    end
Add a result to a tournament. An exception is raised if the players referenced in the result (by number)
 do not exist in the tournament. The result, which remember is from the perspective of one of the players,
 is added to that player's results. Additionally, the reverse of the result is automatically added to the
 player's opponent, if there is one.