protected void extendColumnWithShape(final int height, final int[] colIndexs, final int rowIndex,
                                        final Class<? extends Shape> type) {
        if (Size.DEFAULT_HEIGHT < height) {
            final int count = height / Size.DEFAULT_HEIGHT - 1;

            for (int i = 0; i < count; ++i) {
                for (int j = 0; j < colIndexs.length; ++j) {
                    try {
                        final Shape filler = type.newInstance();
                        ((ColumnLayoutShape) grid.get(colIndexs[j], rowIndex)).append(filler);
                    } catch (InstantiationException ex) {
                        throw new IllegalArgumentException("Can't instantiate shape of type: "
                                                           + type.getName() + "!", ex);
                    } catch (IllegalAccessException ex) {
                        throw new IllegalArgumentException("Can't access shape of type: "
                                                           + type.getName() + "!", ex);
                    }
                }
            }
        }
    }