{
    EStructuralFeature eFeature = eClass().getEStructuralFeature(featureID);
    int dynamicFeatureID = featureID - eStaticFeatureCount();
    if (dynamicFeatureID < 0)
    {
      if (eFeature == null)
      {
        throw new IllegalArgumentException("The feature ID" + featureID + " is not a valid feature ID");
      }
      else if (!eFeature.isChangeable())
      {
        throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid changeable feature");
      }
      else
      {
        eUnset(eFeature); /* backward compatibility with old generated overrides */ 
      }
    }
    else
    {
      eDynamicUnset(dynamicFeatureID, eFeature);
    }
  }