docs: protected void recalculateViewPort(final Adapter adapter) {
          Log.d(Log.SUBSYSTEM.LAYOUT, TAG, "recalculateViewPort mMaxVisiblePageCount = %d mAdapter =%s " +
                          "mAdapter.hasUniformViewSize() = %b",
                  mMaxVisiblePageCount, adapter, (adapter != null ? adapter.hasUniformViewSize() : false));
  
          if (mMaxVisiblePageCount < Integer.MAX_VALUE && adapter != null && adapter.hasUniformViewSize()) {
              int num = Math.min(mMaxVisiblePageCount, adapter.getCount());
              int[] ids = new int[num];
              for (int i = 0; i < num; ++i) {
                  ids[i] = i;
              }
              float width = 0, height = 0, depth = 0;
              for (Layout listLayout: mLayouts) {
                  listLayout.enableClipping(true);
                  float w = listLayout.calculateWidth(ids);
                  if (!Float.isNaN(w)) {
                      width = Math.max(w, width);
                  }
                  float h = listLayout.calculateHeight(ids);
                  if (!Float.isNaN(h)) {
                      height = Math.max(h, height);
                  }
                  float d = listLayout.calculateDepth(ids);
                  if (!Float.isNaN(d)) {
                      depth = Math.max(d, depth);
                  }
              }
  //            Log.d(Log.SUBSYSTEM.LAYOUT,
              Log.d(TAG, "recalculateViewPort(%s) mMaxVisiblePageCount = %d [%f, %f, %f]",
                      getName(), mMaxVisiblePageCount, width, height, depth);
  
              setViewPortWidth(width);
              setViewPortHeight(height);
              setViewPortDepth(depth);
          }
      }