code: def _dfs_usb_info(obj, parents):
      
      output = {}
      if (
          "BSD Name" in obj
          and obj["BSD Name"].startswith("disk")
          and mbed_volume_name_match.search(obj["IORegistryEntryName"])
      ):
          disk_id = obj["BSD Name"]
          usb_info = {"serial": None}
          for parent in [obj] + parents:
              if "USB Serial Number" in parent:
                  usb_info["serial"] = parent["USB Serial Number"]
                  break
          output[disk_id] = usb_info
      for child in obj.get("IORegistryEntryChildren", []):
          output.update(_dfs_usb_info(child, [obj] + parents))
      return output
docs: Find all of the usb info that we can from this particular IORegistry
          tree with depth first search (and searching the parent stack....)