code: def address_offset(self):
          
          if self.inst.is_array:
              if self.current_idx is None:
                  raise ValueError("Index of array element must be known to derive address")
  
              # Calculate the "flattened" index of a general multidimensional array
              # For example, a component array declared as:
              #   foo[S0][S1][S2]
              # and referenced as:
              #   foo[I0][I1][I2]
              # Is flattened like this:
              #   idx = I0*S1*S2 + I1*S2 + I2
              idx = 0
              for i in range(len(self.current_idx)):
                  sz = 1
                  for j in range(i+1, len(self.inst.array_dimensions)):
                      sz *= self.inst.array_dimensions[j]
                  idx += sz * self.current_idx[i]
  
              offset = self.inst.addr_offset + idx * self.inst.array_stride
  
          else:
              offset = self.inst.addr_offset
  
          return offset
docs: Byte address offset of this node relative to it's parent
  
          If this node is an array, it's index must be known
  
          Raises
          ------
          ValueError
              If this property is referenced on a node whose array index is not
              fully defined