docs: @Override
      public List<E> subList(int fromIndex, int toIndex) {
          final ReentrantLock lock = this.lock;
          lock.lock();
          try {
              Object[] elements = getArray();
              int len = elements.length;
              if (fromIndex < 0 || toIndex > len || fromIndex > toIndex)
                  throw new IndexOutOfBoundsException();
              return new COWSubList<E>(this, fromIndex, toIndex);
          } finally {
              lock.unlock();
          }
      }