In DataFetchers, we're assuming Beam VoidCoders in the following cases.
- SourceDataFetcher: When the given element is null
- ParentTaskDataFetcher: When there is no given element
This not only fails under boundary conditions (a source emits a null, parent task has not produced anything), but also complicates the code.
We'll probably have to fix both the compiler and the runtime to address this issue.