docs: @Override
      public void create(Collection<Bean> beans) throws AbortRuntimeException {
          init();
          Set<HBeanRow> beanRows = new HashSet<>();
          Map<HBeanRow, HBeanRow> refRows = new HashMap<>();
          Map<BeanId, Bean> beansMap = BeanUtils.uniqueIndex(beans);
          try {
              for (Bean bean : beans) {
                  beanRows.add(new HBeanRow(bean, uids));
                  for (BeanId ref : bean.getReferences()) {
                      Bean refBean = beansMap.get(ref);
                      HBeanRow row;
                      if (refBean == null) {
                          row = new HBeanRow(ref, uids);
                      } else {
                          row = new HBeanRow(refBean, uids);
                      }
                      refRows.put(row, row);
                  }
              }
              table.getLazy(beanRows);
              throw Events.CFG303_BEAN_ALREADY_EXIST(beans.iterator().next().getId());
          } catch (HBeanNotFoundException e) {
              // ensure beans to be create does not exist
          }
  
          // ensure references exist either in memory or storage
          try {
              refRows = table.getLazyAsMap(refRows);
          } catch (HBeanNotFoundException e) {
              // only throw exception if the bean was not provided
              // as an argument to the create method.
              if (!idsFoundIn(beans, e)) {
                  throw Events.CFG301_MISSING_RUNTIME_REF(e.getNotFound().iterator().next());
              }
              // make sure that references found in storage override the refRows
              for (HBeanRow row : e.getFound().keySet()) {
                  refRows.put(row, row);
              }
  
          }
          // select the rows to update predecessors
          for (HBeanRow beanRow : beanRows) {
              for (HBeanRow refRow : beanRow.getReferenceRows()) {
                  refRow = refRows.get(refRow);
                  refRow.addPredecessor(beanRow);
              }
          }
  
          table.put(beanRows);
          table.put(Sets.newHashSet(refRows.values()));
      }