Thanks for explaining that. I think losing typesafety is the least bad outcome here.
I think maybe we need a refactoring where ListValue is a base type that manages possibly heterogeneous lists, and ListValue<T> can inherit from it and enforce typesafety for use in C#. But that can be done later.
Originally posted by @JonnyOThan in #3129 (comment)