code: public LayoutInfo getLayoutInfo(Container parent) {
          synchronized (parent.getTreeLock()) {
              initializeColAndRowComponentLists();
              Dimension size = parent.getSize();
  
              Insets insets = parent.getInsets();
              int totalWidth = size.width - insets.left - insets.right;
              int totalHeight = size.height - insets.top - insets.bottom;
  
              int[] x = computeGridOrigins(parent,
                      totalWidth, insets.left,
                      colSpecs,
                      colComponents,
                      colGroupIndices,
                      minimumWidthMeasure,
                      preferredWidthMeasure
              );
              int[] y = computeGridOrigins(parent,
                      totalHeight, insets.top,
                      rowSpecs,
                      rowComponents,
                      rowGroupIndices,
                      minimumHeightMeasure,
                      preferredHeightMeasure
              );
              return new LayoutInfo(x, y);
          }
      }
docs: Computes and returns the horizontal and vertical grid origins. Performs the same layout
  process as {@code #layoutContainer} but does not layout the components.<p>
  
  This method has been added only to make it easier to debug the form layout. <strong>You must
  not call this method directly; It may be removed in a future release or the visibility may be
  reduced.</strong>
  
  @param parent the {@code Container} to inspect
  @return an object that comprises the grid x and y origins