protected void prepareMembers(ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, JvmDeclaredType type, Map<JvmIdentifiableElement, ResolvedTypes> resolvedTypesByType) {
IFeatureScopeSession childSession = addExtensionsToMemberSession(resolvedTypes, featureScopeSession, type);
StackedResolvedTypes childResolvedTypes = declareTypeParameters(resolvedTypes, type, resolvedTypesByType);
JvmTypeReference superType = getExtendedClass(type);
ITypeReferenceOwner referenceOwner = childResolvedTypes.getReferenceOwner();
if (superType != null) {
LightweightTypeReference lightweightSuperType = referenceOwner.toLightweightTypeReference(superType);
childResolvedTypes.reassignTypeWithoutMerge(superType.getType(), lightweightSuperType);
}
LightweightTypeReference lightweightThisType = referenceOwner.toLightweightTypeReference(type);
childResolvedTypes.reassignTypeWithoutMerge(type, lightweightThisType);
List<JvmMember> members = type.getMembers();
int size = members.size();
for(int i = 0; i < size; i++) {
doPrepare(childResolvedTypes, childSession, members.get(i), resolvedTypesByType);
}
}