public <B extends AbstractRuleBucket<T, NRE, DRE>> void add(B bucket) throws DRE { String id = null; try { for (String conceptId : bucket.getIds()) { id = conceptId; T rule = null; rule = bucket.getById(id); add(rule); } } catch (NoRuleException e) { throw new IllegalStateException("No rule of type " + getRuleTypeName() + " width " + id + " not found in overhanded bucket. The bucket is in an inconsistent state."); } } }