<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def update_property(tree_to_update, xpath_root, xpaths, prop, values, supported=None):
 """ Either update the tree the default way, or call the custom updater Default Way: Existing values in the tree are overwritten. If xpaths contains a single path, then each value is written to the tree at that path. If xpaths contains a list of xpaths, then the values corresponding to each xpath index are written to their respective locations. In either case, empty values are ignored. :param tree_to_update: the XML tree compatible with element_utils to be updated :param xpath_root: the XPATH location shared by all the xpaths passed in :param xpaths: a string or a list of strings representing the XPATH location(s) to which to write values :param prop: the name of the property of the parser containing the value(s) with which to update the tree :param values: a single value, or a list of values to write to the specified XPATHs :see: ParserProperty for more on custom updaters :return: a list of all elements updated by this operation """


    if supported and prop.startswith('_') and prop.strip('_') in supported:
        values = u''  # Remove alternate elements: write values only to primary location
    else:
        values = get_default_for(prop, values)  # Enforce defaults as required per property

    if not xpaths:
        return []
    elif not isinstance(xpaths, ParserProperty):
        return _update_property(tree_to_update, xpath_root, xpaths, values)
    else:
        # Call ParserProperty.set_prop without xpath_root (managed internally)
        return xpaths.set_prop(tree_to_update=tree_to_update, prop=prop, values=values)