code: def update_complex_list(tree_to_update, xpath_root, xpath_map, prop, values):
      
  
      complex_list = []
  
      remove_element(tree_to_update, xpath_root, True)
  
      if not values:
          # Returns the elements corresponding to property removed from the tree
          complex_list.append(update_property(tree_to_update, xpath_root, xpath_root, prop, values))
      else:
          for idx, complex_struct in enumerate(wrap_value(values)):
  
              # Insert a new complex element root for each dict in the list
              complex_element = insert_element(tree_to_update, idx, xpath_root)
  
              for subprop, value in iteritems(complex_struct):
                  xpath = get_xpath_branch(xpath_root, xpath_map[subprop])
                  value = get_default_for_complex_sub(prop, subprop, value, xpath)
                  complex_list.append(update_property(complex_element, None, xpath, subprop, value))
  
      return complex_list
docs: Updates and returns the list of updated complex Elements parsed from tree_to_update.
      :param tree_to_update: the XML tree compatible with element_utils to be updated
      :param xpath_root: the XPATH location of each complex Element
      :param xpath_map: a Dictionary of XPATHs corresponding to the complex structure definition
      :param prop: the property identifying the complex structure to be serialized
      :param values: a List containing the updated complex structures as Dictionaries