def METHOD_NAME(cls, username, work_id, edition_id=NULL_EDITION_VALUE):
    """Remove a patron's specific booknote by work_id.
    Technical note: work_id is not an optional argument and
    intentionally does not default to None (to reduce
    accidents/risk), however if one passes None as a value to
    work_id, this method will remove all booknotes for a patron
    (useful for a patron who may decide to close their account.
    Q: Is there a way to add a dryrun=False param to make this safer?
    return: a list of the IDs affected
    """
    oldb = db.get_db()
    where = {
        'username': username,
        'work_id': int(work_id),
        'edition_id': edition_id,
    }
    try:
        return oldb.delete(
            'booknotes',
            where=(
                'work_id=$work_id AND username=$username AND edition_id=$edition_id'
            ),
            vars=where,
        )
    except:  # we want to catch no entry exists
        return None