the thing with variant is that it can get highly inefficient storage-wise if you have a wildly varying (no pun intended) mix of types. it also requires everyone to know all the potential types.
In this case it's just storing pointers