I think I don't quite understand struct, id doesn't seem possible to create a struct where the elements shape can be controlled like with the StructLayout: ```python class CFixStruct(data.Struct): def __init__(self, shape): super().__init__({ "real": shape, "imag": shape, }) ``` yields: ```python --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[158], line 1 ----> 1 CFixStruct(fixed.SQ(8, 8)) File ~/Workspace/research/amaranth/amaranth/lib/data.py:1073, in _AggregateMeta.__call__(cls, target) 1071 def __call__(cls, target): 1072 # This method exists to pass the override check done by ShapeCastable. -> 1073 return super().__call__(cls, target) File ~/Workspace/research/amaranth/amaranth/hdl/_ast.py:386, in ShapeCastable.__call__(self, *args, **kwargs) 358 def __call__(self, *args, **kwargs): 359 """__call__(obj) 360 361 Lift a :ref:`value-like object ` to a higher-level representation. (...) 384 A :ref:`value-like object `. 385 """ --> 386 return super().__call__(*args, **kwargs) TypeError: CFixStruct.__init__() takes 2 positional arguments but 3 were given ```