docs: @Override
    public DataPoints[] evaluate(TSQuery data_query, List<DataPoints[]> results, List<String> params) {
      //not 100% sure what to do here -> do I need to think of the case where I have no data points
      if (results == null || results.isEmpty()) {
        return new DataPoints[]{};
      }
      if (params == null || params.isEmpty()) {
        throw new IllegalArgumentException("Need amount of timeshift to perform timeshift");
      }
  
      String param = params.get(0);
      if (param == null || param.length() == 0) {
        throw new IllegalArgumentException("Invalid timeshift='" + param + "'");
      }
  
      param = param.trim();
  
      long timeshift = -1;
      if (param.startsWith("'") && param.endsWith("'")) {
        timeshift = parseParam(param);
      } else {
        throw new RuntimeException("Invalid timeshift parameter: eg '10min'");
      }
  
      if (timeshift <= 0) {
        throw new RuntimeException("timeshift <= 0");
      }
  
      return performShift(results.get(0), timeshift);
    }