protected <T, K> T applyManyTraits( K core, Collection<Class<? extends Thing>> traits, Object value, boolean logical) throws LogicalTypeInconsistencyException {
// Precondition : traits is not empty, checked by don
TraitFactory builder = TraitFactory.getTraitBuilderForKnowledgeBase( this.getKnowledgeRuntime().getKnowledgeBase() );
TraitableBean inner = makeTraitable( core, builder, logical );
Collection<Key<Thing>> mostSpecificTraits = inner.getMostSpecificTraits();
boolean newTraitsAdded = false;