@SuppressWarnings("unused")
protected void _computeTypes(Map<JvmIdentifiableElement, ResolvedTypes> preparedResolvedTypes, ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, JvmOperation operation) {
ResolvedTypes childResolvedTypes = preparedResolvedTypes.get(operation);
if (childResolvedTypes == null) {
if (preparedResolvedTypes.containsKey(operation))
return;
throw new IllegalStateException("No resolved type found. Operation was: " + operation.getIdentifier());
} else {
preparedResolvedTypes.put(operation, null);
}
OperationBodyComputationState state = new OperationBodyComputationState(childResolvedTypes, operation.isStatic() ? featureScopeSession : featureScopeSession.toInstanceContext(), operation);
addExtensionProviders(state, operation.getParameters());
markComputing(operation.getReturnType());
try {
state.computeTypes();
} finally {
unmarkComputing(operation.getReturnType());
}
computeAnnotationTypes(childResolvedTypes, featureScopeSession, operation);
computeLocalTypes(preparedResolvedTypes, childResolvedTypes, featureScopeSession, operation);
mergeChildTypes(childResolvedTypes);
}