docs: public static Object[] sub(Object array, int start, int end, int step) {
  		int length = length(array);
  		if (start < 0) {
  			start += length;
  		}
  		if (end < 0) {
  			end += length;
  		}
  		if (start == length) {
  			return new Object[0];
  		}
  		if (start > end) {
  			int tmp = start;
  			start = end;
  			end = tmp;
  		}
  		if (end > length) {
  			if (start >= length) {
  				return new Object[0];
  			}
  			end = length;
  		}
  
  		if (step <= 1) {
  			step = 1;
  		}
  
  		final ArrayList<Object> list = new ArrayList<>();
  		for (int i = start; i < end; i += step) {
  			list.add(get(array, i));
  		}
  
  		return list.toArray();
  	}