docs: public void buildTable(Table table, List<T> beans) {
  
          BeanItemContainer<T> container = new BeanItemContainer<T>(m_class);
          List<String> visibleCols = Lists.newArrayList();
          for (ColumnBean column : m_columns) {
              String propName = column.getProperty().getName();
              String columnHeader = column.getInfo().header();
              String localizedHeader = CmsVaadinUtils.getMessageText(columnHeader);
              if (CmsMessages.isUnknownKey(localizedHeader)) {
                  localizedHeader = columnHeader;
              }
              localizedHeader = m_macroResolver.resolveMacros(localizedHeader);
              table.setColumnHeader(propName, localizedHeader);
              if (Button.class.isAssignableFrom(column.getProperty().getPropertyType())) {
                  table.setColumnAlignment(propName, Align.CENTER);
              }
              visibleCols.add(propName);
          }
          table.setContainerDataSource(container);
          table.setVisibleColumns(visibleCols.toArray());
  
          for (ColumnBean column : m_columns) {
              Column info = column.getInfo();
              String name = column.getProperty().getName();
              if (info.width() >= 0) {
                  table.setColumnWidth(name, info.width());
              }
              if (info.expandRatio() >= 0) {
                  table.setColumnExpandRatio(name, info.expandRatio());
              }
          }
          for (T bean : beans) {
              container.addBean(bean);
          }
  
      }