aiagnostic takes symbolic error reasons instead of messages.