@Override
public final void add(InternalEObject internalObject, EStructuralFeature feature, int index, Object value) {
checkNotNull(internalObject, "internalObject");
checkNotNull(feature, "feature");
checkNotNull(value, "value");
checkState(feature.isMany(), "Cannot compute add() of a single-valued feature");
PersistentEObject object = PersistentEObject.from(internalObject);
updateInstanceOf(object);
SingleFeatureBean bean = SingleFeatureBean.from(object, feature);
if (EFeatures.isAttribute(feature)) {
if (index == EStore.NO_INDEX) {
store.appendValue(bean, attrConverter.convert(value, EFeatures.asAttribute(feature)));
}
else {
store.addValue(bean.withPosition(index), attrConverter.convert(value, EFeatures.asAttribute(feature)));
}
}
else {
PersistentEObject referencedObject = PersistentEObject.from(value);
updateInstanceOf(referencedObject);
if (index == EStore.NO_INDEX) {
store.appendReference(bean, refConverter.convert(referencedObject));
}
else {
store.addReference(bean.withPosition(index), refConverter.convert(referencedObject));
}
}
}