code: def serialize_structmap(self, recurse=True, normative=False):
          
          if not self.label:
              return None
          # Empty directories are not included in the physical structmap.
          if self.is_empty_dir and not normative:
              return None
          el = etree.Element(utils.lxmlns("mets") + "div", TYPE=self.mets_div_type)
          el.attrib["LABEL"] = self.label
          if (not normative) and self.file_id():
              etree.SubElement(el, utils.lxmlns("mets") + "fptr", FILEID=self.file_id())
          if self.dmdids:
              if (not normative) or (normative and self.is_empty_dir):
                  el.set("DMDID", " ".join(self.dmdids))
          if recurse and self._children:
              for child in self._children:
                  child_el = child.serialize_structmap(
                      recurse=recurse, normative=normative
                  )
                  if child_el is not None:
                      el.append(child_el)
          return el
docs: Return the div Element for this file, appropriate for use in a
          structMap.
  
          If this FSEntry represents a directory, its children will be
          recursively appended to itself. If this FSEntry represents a file, it
          will contain a <fptr> element.
  
          :param bool recurse: If true, serialize and apppend all children.
              Otherwise, only serialize this element but not any children.
          :param bool normative: If true, we are creating a "Normative Directory
              Structure" logical structmap, in which case we add div elements for
              empty directories and do not add fptr elements for files.
          :return: structMap element for this FSEntry