EClass eClass = eObject.eClass();
int openFeatureCount = featureID - eClass.getFeatureCount();
Set openFeatureSet = new HashSet();
for (int i = 0, count = eClass.getEAllStructuralFeatures().size(); i < count; ++i)
{
EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(i);
if (!eStructuralFeature.isDerived() && FeatureMapUtil.isFeatureMap(eStructuralFeature))
{
List features = (List)eObject.eGet(eStructuralFeature);
for (int j = 0, size = features.size(); j < size; ++j)
{
FeatureMap.Entry entry = (FeatureMap.Entry)features.get(j);
EStructuralFeature entryFeature = entry.getEStructuralFeature();
if (openFeatureSet.add(entryFeature))
{
if (--openFeatureCount < 0) return entryFeature;
}
}