@Override
        public boolean push_msg (Msg msg_)
        {
            switch (state) {
            case bottom:
                if (msg_.flags () == Msg.more && msg_.size () == 0) {
                    state = State.body;
                    return super.push_msg (msg_);
                }
                break;
            case body:
                if (msg_.flags () == Msg.more)
                    return super.push_msg (msg_);
                if (msg_.flags () == 0) {
                    state = State.bottom;
                    return super.push_msg (msg_);
                }
                break;
            case identity:
                if (msg_.flags () == 0) {
                    state = State.bottom;
                    return super.push_msg (msg_);
                }
                break;
            }
            
            throw new IllegalStateException(state.toString());
        }