docs: def build_area_source_geometry(area_source):
      """
      Returns the area source geometry as a Node
  
      :param area_source:
          Area source model as an instance of the :class:
          `openquake.hazardlib.source.area.AreaSource`
      :returns:
          Instance of :class:`openquake.baselib.node.Node`
      """
      geom = []
      for lon_lat in zip(area_source.polygon.lons, area_source.polygon.lats):
          geom.extend(lon_lat)
      poslist_node = Node("gml:posList", text=geom)
      linear_ring_node = Node("gml:LinearRing", nodes=[poslist_node])
      exterior_node = Node("gml:exterior", nodes=[linear_ring_node])
      polygon_node = Node("gml:Polygon", nodes=[exterior_node])
      upper_depth_node = Node(
          "upperSeismoDepth", text=area_source.upper_seismogenic_depth)
      lower_depth_node = Node(
          "lowerSeismoDepth", text=area_source.lower_seismogenic_depth)
      return Node(
          "areaGeometry", {'discretization': area_source.area_discretization},
          nodes=[polygon_node, upper_depth_node, lower_depth_node])