// layouter: voidfunc(Container) or func(Container) -> Dimension // (return value is preferred size) static LayoutManager layoutManagerFromFunction(fO layouter) { ret new AbstractLayoutManager { public void layoutContainer(Container parent) { Dimension size = cast callF(layouter, parent); if (size != null) preferredSize = size; } }; }