Diagnostic takes symbolic error reasons instead of messages.