The simple fact is that checkNotNull throws NPE which to users looks like a core dump sort of failure. It throws a "500 error" when we usually intend a "400 error", so to speak, so the bugs get filed on the wrong components, or users don't know they passed the wrong thing, etc.
Imported from Jira BEAM-3607. Original Jira may contain additional context.
Reported by: kenn.
Subtask of issue #18718