@Override
  public void layoutContainer(Container parent) {

    if (parent != container) {
      throw new LayoutException(
          "All layout operations must occur upon this manager's parent container");
    }

    paraboxLayout.doLayout(parent.getWidth(), parent.getHeight(), parent.getComponents());
  }
  @Override
  public Dimension maximumLayoutSize(Container parent) {

    if (parent != container) {
      throw new LayoutException(
          "All layout operations must occur upon this manager's parent container");
    }

    Pair size = paraboxLayout.calculateMaximumSize();

    return new Dimension((int) size.getFirst(), (int) size.getSecond());
  }
  public SerialBox sequentialBox(double gap, Justification justification, boolean greedy) {

    return paraboxLayout.serialBox(gap, justification, greedy);
  }
  public SerialBox sequentialBox(double gap, Justification justification) {

    return paraboxLayout.serialBox(gap, justification);
  }
  public SerialBox sequentialBox(Justification justification) {

    return paraboxLayout.serialBox(justification);
  }
  public SerialBox sequentialBox(double gap, boolean greedy) {

    return paraboxLayout.serialBox(gap, greedy);
  }
  public SerialBox sequentialBox(double gap) {

    return paraboxLayout.serialBox(gap);
  }
  public SerialBox sequentialBox(boolean greedy) {

    return paraboxLayout.serialBox(greedy);
  }
  public ParallelBox parallelBox(Alignment alignment) {

    return paraboxLayout.parallelBox(alignment);
  }
  public ParallelBox parallelBox() {

    return paraboxLayout.parallelBox();
  }
  public ParaboxLayoutManager setVerticalBox(Box<?> verticalBox) {

    paraboxLayout.setVerticalBox(verticalBox);

    return this;
  }
  public Box<?> getVerticalBox() {

    return paraboxLayout.getVerticalBox();
  }
  public ParaboxLayoutManager setHorizontalBox(Box<?> horizontalBox) {

    paraboxLayout.setHorizontalBox(horizontalBox);

    return this;
  }
  public Box<?> getHorizontalBox() {

    return paraboxLayout.getHorizontalBox();
  }
  public void removeAll() {

    paraboxLayout.removeAll();
  }
  @Override
  public void removeLayoutComponent(Component comp) {

    paraboxLayout.remove(comp);
  }
  public SerialBox sequentialBox() {

    return paraboxLayout.serialBox();
  }