code: public static <T> List<List<T>> divideListSize(List<T> list, int listSize) {
  		if(list.size() <= listSize)
  			return new ArrayList<>(Arrays.asList(list));
  		int numLists = (int) Math.ceil(list.size() / (listSize + 0.0));
  //		System.out.println("num lists: " + numLists);
  		Integer[] positions = new Integer[numLists-1];
  		for(int i=0; i<numLists; i++){
  			int position = ((i+1)*listSize);
  //			System.out.println("position: " + position);
  			if(position < list.size()){
  				positions[i] = position;
  //				System.out.println("add position");
  			}
  		}
  //		System.out.println(Arrays.toString(positions));
  		return divideListPos(list, positions);
  	}
docs: Divides the given list using the boundaries in <code>cuts</code>.<br>
  Cuts are interpreted in an inclusive way, which means that a single cut
  at position i divides the given list in 0...i-1 + i...n<br>
  This method deals with both cut positions including and excluding start
  and end-indexes<br>
  
  @param <T>
  Type of list elements
  @param list
  The list to divide
  @param positions
  Cut positions for divide operations
  @return A list of sublists of <code>list</code> according to the given
  cut positions