{
if (settingDelegate == null)
{
EClass eClass = getEContainingClass();
eClass.getFeatureCount();
EReference eOpposite = getEOpposite();
if (eOpposite != null)
{
eOpposite.getEContainingClass().getFeatureCount();
}
EClassifier eType = getEType();
Class<?> dataClass = EcoreUtil.wrapperClassFor(eType.getInstanceClass());
Object defaultValue = getDefaultValue();
Object intrinsicDefaultValue = eType.getDefaultValue();
EStructuralFeature featureMapFeature;
SettingDelegate.Factory settingDelegateFactory;
if ((settingDelegateFactory = EcoreUtil.getSettingDelegateFactory(this)) != null)
{
settingDelegate = settingDelegateFactory.createSettingDelegate(this);
}
else if (isDerived() &&
(((featureMapFeature = ExtendedMetaData.INSTANCE.getMixedFeature(eClass)) != null &&
featureMapFeature != this) ||
((featureMapFeature = ExtendedMetaData.INSTANCE.getGroup(this)) != null)))
{
settingDelegate = new InternalSettingDelegateFeatureMapDelegator(this, featureMapFeature);
}
else if (isMany())
{
if (isContainment())
{
if (eOpposite == null)
{
if (isUnsettable())
{
if (dataClass == null)
{
if (isResolveProxies())
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_UNSETTABLE_DYNAMIC_RESOLVE, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_UNSETTABLE_DYNAMIC, this);
}
}
else if (dataClass == Map.Entry.class)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EMAP_UNSETTABLE, BasicEMap.Entry.class, this);
}
else
{
if (isResolveProxies())
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_UNSETTABLE_RESOLVE, dataClass, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_UNSETTABLE, dataClass, this);
}
}
}
else
{
if (dataClass == null)
{
if (isResolveProxies())
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_DYNAMIC_RESOLVE, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_DYNAMIC, this);
}
}
else if (dataClass == Map.Entry.class)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EMAP, BasicEMap.Entry.class, this);
}
else
{
if (isResolveProxies())
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_RESOLVE, dataClass, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT, dataClass, this);
}
}
}
}
else
{
if (isUnsettable())
{
if (dataClass == null)
{
if (isResolveProxies())
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_INVERSE_UNSETTABLE_DYNAMIC_RESOLVE, this, eOpposite);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_INVERSE_UNSETTABLE_DYNAMIC, this, eOpposite);
}
}
else
{
if (isResolveProxies())
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_INVERSE_UNSETTABLE_RESOLVE, dataClass, this, eOpposite);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_INVERSE_UNSETTABLE, dataClass, this, eOpposite);
}
}
}
else
{
if (dataClass == null)
{
if (isResolveProxies())
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_INVERSE_DYNAMIC_RESOLVE, this, eOpposite);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_INVERSE_DYNAMIC, this, eOpposite);
}
}
else
{
if (isResolveProxies())
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_INVERSE_RESOLVE, dataClass, this, eOpposite);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.CONTAINMENT_INVERSE, dataClass, this, eOpposite);
}
}
}
}
}
else if (eType instanceof EDataType)
{
if (dataClass == FeatureMap.Entry.class)
{
settingDelegate = createFeatureMapSettingDelegate();
}
else if (isUnique())
{
if (isUnsettable())
{
if (dataClass == null)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.DATA_UNIQUE_UNSETTABLE_DYNAMIC, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.DATA_UNIQUE_UNSETTABLE, dataClass, this);
}
}
else
{
if (dataClass == null)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.DATA_UNIQUE_DYNAMIC, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.DATA_UNIQUE, dataClass, this);
}
}
}
else
{
if (isUnsettable())
{
if (dataClass == null)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.DATA_UNSETTABLE_DYNAMIC, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.DATA_UNSETTABLE, dataClass, this);
}
}
else
{
if (dataClass == null)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.DATA_DYNAMIC, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.DATA, dataClass, this);
}
}
}
}
else if (eOpposite == null)
{
if (isResolveProxies())
{
if (isUnsettable())
{
if (dataClass == null)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EOBJECT_RESOLVE_UNSETTABLE_DYNAMIC, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EOBJECT_RESOLVE_UNSETTABLE, dataClass, this);
}
}
else
{
if (dataClass == null)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EOBJECT_RESOLVE_DYNAMIC, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EOBJECT_RESOLVE, dataClass, this);
}
}
}
else
{
if (isUnsettable())
{
if (dataClass == null)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EOBJECT_UNSETTABLE_DYNAMIC, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EOBJECT_UNSETTABLE, dataClass, this);
}
}
else
{
if (dataClass == null)
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EOBJECT_DYNAMIC, this);
}
else
{
settingDelegate =
new InternalSettingDelegateMany
(InternalSettingDelegateMany.EOBJECT, dataClass, this);
}
}
}
}
else if (eOpposite.isMany())
{
if (isResolveProxies())
{
if (isUnsettable())
{