passUp(new Event(Event.DISCONNECT_OK)); initState();
if(!(impl instanceof CoordGmsImpl)) { passUp(new Event(Event.DISCONNECT_OK)); initState(); }
    public void down(Event evt) {        switch(evt.getType()) {            case Event.CONNECT:                Object arg=null;                passDown(evt);                if(local_addr == null)                    if(log.isFatalEnabled()) log.fatal("[CONNECT] local_addr is null");                try {                    impl.join(local_addr);                }                catch(SecurityException e) {                    arg=e;                }                passUp(new Event(Event.CONNECT_OK, arg));                return;                              // don't pass down: was already passed down            case Event.DISCONNECT:                impl.leave((Address)evt.getArg());                passUp(new Event(Event.DISCONNECT_OK));                initState(); // in case connect() is called again                break;       // pass down        }        if(impl.handleDownEvent(evt))            passDown(evt);    }