Make StructDescriptor generic