def is_dynamic(self):
        """ True if this type uses dynamic (Heap) memory.
        e.g. strings or dynamic arrays
        """
        if self is not self.final:
            return self.final.is_dynamic

        return any([x.is_dynamic for x in self.children])
True if this type uses dynamic (Heap) memory.
        e.g. strings or dynamic arrays