def copy_location(new_node, old_node):
    """
    Copy source location (`lineno`, `col_offset`, `end_lineno`, and
    `end_col_offset` attributes) from *old_node* to *new_node* if possible,
    and return *new_node*.
    """
    for attr in ('lineno', 'col_offset', 'end_lineno', 'end_col_offset'):
        if (attr in old_node._attributes and attr in new_node._attributes and
            hasattr(old_node, attr)):
            setattr(new_node, attr, getattr(old_node, attr))
    return new_node
