Ingo, bear with me here for a moment, as it actually does but requires some explanation.

During update of DataObject::get_by_id, get_one, etc to work with parameterised queries I noted that some of the GridField test cases were failing. This seemed to be due to the code passing in objects as identifiers rather than value types. I traced this down to some poor behaviour on the part of GridState, where requesting values for various state variables would return a GridState object where a null would be expected for unset values. I had to extend the api to allow user code to specify whether or not a value, or a nested gridstate (as is the default value) should be returned when a variable is empty.

Note https://github.com/silverstripe/sapphire/pull/1360/files#L41L169 as an example of the previous bad behaving code.