code: @SuppressWarnings("unchecked")
      public static <T> boolean deleteRange(final List<T> c, final int fromIndex, final int toIndex) {
          N.checkFromToIndex(fromIndex, toIndex, c.size());
  
          if (fromIndex == toIndex) {
              return false;
          }
  
          if (c instanceof LinkedList || toIndex - fromIndex <= 3) {
              c.subList(fromIndex, toIndex).clear();
          } else {
              if (isListElementDataFieldGettable && isListElementDataFieldSettable && listElementDataField != null && c instanceof ArrayList) {
                  T[] array = null;
  
                  try {
                      array = (T[]) listElementDataField.get(c);
                      N.copy(array, toIndex, array, fromIndex, c.size() - toIndex);
                      listSizeField.set(c, c.size() - (toIndex - fromIndex));
                      // update modCount
                      c.add(null);
                      c.remove(c.size() - 1);
                      return true;
                  } catch (Throwable e) {
                      // ignore;
                      isListElementDataFieldSettable = false;
                  }
              }
  
              final List<T> tmp = new ArrayList<>(c.size() - (toIndex - fromIndex));
  
              if (fromIndex > 0) {
                  tmp.addAll(c.subList(0, fromIndex));
              }
  
              if (toIndex < c.size()) {
                  tmp.addAll(c.subList(toIndex, c.size()));
              }
  
              c.clear();
              c.addAll(tmp);
          }
  
          return true;
      }
docs: Returns {@code true} if the {@code List} is updated when {@code fromIndex < toIndex}, otherwise {@code false} is returned when {@code fromIndex == toIndex}.
  
  @param c
  @param fromIndex
  @param toIndex
  @return