code: public void registerSearchRun(String problemID, String searchID, SearchRunResults<SolutionType> run){
          if(!results.containsKey(problemID)){
              results.put(problemID, new HashMap<>());
          }
          if(!results.get(problemID).containsKey(searchID)){
              results.get(problemID).put(searchID, new ArrayList<>());
          }
          results.get(problemID).get(searchID).add(run);
      }
docs: Register results of a search run, specifying the IDs of the problem being solved and the applied search.
  If no runs have been registered before for this combination of problem and search, new entries are created.
  Else, this run is appended to the existing runs.
  
  @param problemID ID of the problem being solved
  @param searchID ID of the applied search
  @param run results of the search run