code: def _resolve_default(data_type, listify=False):
      
      if isinstance(data_type, _ATOMIC):
          # A Python's object type needs to be left as is instead of being
          # wrapped into a NumPy type.
          out = (data_type.default if isinstance(data_type, Object)
                 else _get_atomic_dtype(data_type)(data_type.default))
      elif isinstance(data_type, Array):
          element_default = _resolve_default(data_type.element_type,
                                             listify=listify)
          Sequence = list if listify else tuple
          shape = ((data_type.shape,) if isinstance(data_type.shape, int)
                   else data_type.shape)
          out = element_default
          for dimension in shape:
              out = Sequence(copy.deepcopy(out) for _ in _range(dimension))
      elif isinstance(data_type, Structure):
          if listify:
              out = [_resolve_default(field.type, listify=listify)
                     for field in data_type.fields]
          else:
              field_defaults = collections.OrderedDict(
                  (field.name, _resolve_default(field.type, listify=listify))
                  for field in data_type.fields)
              name = ('StructureDefault_%s' % (data_type.name,)
                      if data_type.name else 'StructureDefault')
              struct = collections.namedtuple(name, field_defaults.keys())
              out = struct(**field_defaults)
  
      return out
docs: Retrieve the default value for a given data type.