public void process(WatchedEvent watchedEvent) {
   try {
     Closure callback = null;
     switch (watchedEvent.getType()) {
       case NodeChildrenChanged:
         if (null != onNodeChildrenChanged) {
           callback = onNodeChildrenChanged;
         } else {
           callback = onEvent;
         }
         break;
       case NodeCreated:
         if (null != onNodeCreated) {
           callback = onNodeCreated;
         } else {
           callback = onEvent;
         }
         break;
       case NodeDeleted:
         if (null != onNodeDeleted) {
           callback = onNodeDeleted;
         } else {
           callback = onEvent;
         }
         break;
       case NodeDataChanged:
         if (null != onDataChanged) {
           callback = onDataChanged;
         } else {
           callback = onEvent;
         }
         break;
       case None:
         if (null != onEvent) {
           callback = onEvent;
         }
     }
     if (null != callback) {
       callback.call(watchedEvent);
     } else {
       log.warn("No callbacks defined to accept event: " + watchedEvent);
     }
   } catch (Throwable t) {
     log.debug(t.getMessage());
   }
 }