code: @MainThread
      private void loadMoreForward() {
          // im.actor.runtime.Runtime.checkMainThread();
  
          // Log.d(TAG, "Requesting loading more...");
  
          if (isLoadMoreForwardRequested) {
              // Log.d(TAG, "Already requested");
              return;
          }
  
          if (!window.startForwardLoading()) {
              // Log.d(TAG, "Unable to start forward loading");
              return;
          }
  
          isLoadMoreForwardRequested = true;
          final int gen = currentGeneration;
          // Log.d(TAG, "Loading more items...");
          final long start = System.currentTimeMillis();
          ListEngineDisplayLoadCallback<T> callback = cover(new ListEngineDisplayLoadCallback<T>() {
              @Override
              public void onLoaded(List<T> items, long topSortKey, long bottomSortKey) {
                  im.actor.runtime.Runtime.checkMainThread();
  
                  // Log.d(TAG, "Items loaded in " + (System.currentTimeMillis() - start) + " ms");
  
                  window.completeForwardLoading();
  
                  if (items.size() == 0) {
                      window.onForwardCompleted();
                      if (bindHook != null) {
                          bindHook.onScrolledToEnd();
                      }
                      // Log.d(TAG, "isLoadMoreForwardRequested = false: sync");
                      isLoadMoreForwardRequested = false;
                  } else {
                      window.onForwardSliceLoaded(bottomSortKey);
                      if (linearLayoutCallback != null) {
                          linearLayoutCallback.setStackFromEnd(false);
                      }
                      editList(Modifications.addLoadMore(items), new Runnable() {
                          @Override
                          public void run() {
                              if (gen == currentGeneration) {
                                  // Log.d(TAG, "isLoadMoreForwardRequested = false");
                                  isLoadMoreForwardRequested = false;
                              }
                          }
                      }, true);
                  }
              }
          }, currentGeneration);
  
          if (mode != ListMode.SEARCH) {
              // Log.d(TAG, "Loading more...");
              listEngine.loadForward(window.getCurrentForwardHead(), pageSize, callback);
          } else {
              // Log.d(TAG, "Loading more search...");
              listEngine.loadForward(query, window.getCurrentForwardHead(), pageSize, callback);
          }
      }
docs: Load more