'Create a children watcher for a path
:param client: A zookeeper client.
:type client: :class:`~kazoo.client.KazooClient`
:param path: The path to watch for children on.
:type path: str
:param func: Function to call initially and every time the
children change. `func` will be called with a
single argument, the list of children.
:type func: callable
:param allow_session_lost: Whether the watch should be
re-registered if the zookeeper
session is lost.
:type allow_session_lost: bool
:type send_event: bool
:param send_event: Whether the function should be passed the
event sent by ZooKeeper or None upon
initialization (see class documentation)
The path must already exist for the children watcher to
run.'

def __init__(self, client, path, func=None, allow_session_lost=True, send_event=False):

    self._client = client
    self._path = path
    self._func = func
    self._send_event = send_event
    self._stopped = False
    self._watch_established = False
    self._allow_session_lost = allow_session_lost
    self._run_lock = client.handler.lock_object()
    self._prior_children = None
    self._used = False
    if (func is not None):
        self._used = True
        if allow_session_lost:
            self._client.add_listener(self._session_watcher)
        self._get_children()
