code: def todict(self, complex_tuple=False):
          
          # TODO: Preserve ordering
          nmldict = OrderedDict(self)
  
          # Search for namelists within the namelist
          # TODO: Move repeated stuff to new functions
          for key, value in self.items():
              if isinstance(value, Namelist):
                  nmldict[key] = value.todict(complex_tuple)
  
              elif isinstance(value, complex) and complex_tuple:
                  nmldict[key] = [value.real, value.imag]
                  try:
                      nmldict['_complex'].append(key)
                  except KeyError:
                      nmldict['_complex'] = [key]
  
              elif isinstance(value, list):
                  complex_list = False
                  for idx, entry in enumerate(value):
                      if isinstance(entry, Namelist):
                          nmldict[key][idx] = entry.todict(complex_tuple)
  
                      elif isinstance(entry, complex) and complex_tuple:
                          nmldict[key][idx] = [entry.real, entry.imag]
                          complex_list = True
  
                  if complex_list:
                      try:
                          nmldict['_complex'].append(key)
                      except KeyError:
                          nmldict['_complex'] = [key]
  
          # Append the start index if present
          if self.start_index:
              nmldict['_start_index'] = self.start_index
  
          return nmldict
docs: Return a dict equivalent to the namelist.
  
          Since Fortran variables and names cannot start with the ``_``
          character, any keys starting with this token denote metadata, such as
          starting index.
  
          The ``complex_tuple`` flag is used to convert complex data into an
          equivalent 2-tuple, with metadata stored to flag the variable as
          complex.  This is primarily used to facilitate the storage of the
          namelist into an equivalent format which does not support complex
          numbers, such as JSON or YAML.