docs: public static <T> List<T> getAt(List<T> self, Range range) {
          RangeInfo info = subListBorders(self.size(), range);
  
          List<T> subList = self.subList(info.from, info.to);
          if (info.reverse) {
              subList = reverse(subList);
          }
  
          // trying to guess the concrete list type and create a new instance from it
          List<T> answer = createSimilarList(self, subList.size());
          answer.addAll(subList);
  
          return answer;
      }