protected IFeatureScopeSession addExtensionsToMemberSession(ResolvedTypes resolvedTypes,
IFeatureScopeSession featureScopeSession, JvmDeclaredType type) {
IEObjectDescription thisDescription = featureScopeSession.getLocalElement(IFeatureNames.THIS);
if (thisDescription == null) {
throw new IllegalStateException("Cannot find feature 'THIS'");
}
JvmIdentifiableElement thisFeature = (JvmIdentifiableElement) thisDescription.getEObjectOrProxy();
IFeatureScopeSession childSession = addExtensionFieldsToMemberSession(
resolvedTypes, featureScopeSession, type, thisFeature, Sets.<String>newHashSetWithExpectedSize(8), Sets.<JvmType>newHashSetWithExpectedSize(4));
XFeatureCall thisAccess = getXbaseFactory().createXFeatureCall();
thisAccess.setFeature(thisFeature);
LightweightTypeReference thisType = resolvedTypes.getActualType(thisFeature);
childSession = childSession.addToExtensionScope(Collections.<XExpression, LightweightTypeReference>singletonMap(thisAccess, thisType));
return childSession;
}