def METHOD_NAME(form, members_value, authority, user_svc, parent_exc):
    if not members_value:
        return
    members_node = form.get("members")
    member_node = members_node.get("member")
    members_error = colander.Invalid(members_node, None)
    for pos, node_value in enumerate(members_value):
        if not user_svc.fetch(node_value, authority):
            # If we don't attach errors in the right position, they don't
            # appear. For a list type value the correct position is the index
            # of the value in the list
            members_error.add(
                colander.Invalid(
                    member_node,
                    _("User '{username}' not found at authority '{authority}'").format(
                        username=node_value, authority=authority
                    ),
                ),
                pos=pos,
            )
    if members_error.children:
        # For non-lists the correct position is the index within the flat list
        # of children that colander stores internally for the parent node
        parent_exc.add(members_error, pos=form.children.index(members_node))