@Override
    public void action() {
        ACLMessage msg = myAgent.receive(msgFilter);
        if (msg != null) {
            if (msg.getConversationId() == null) {
                logger.log(Level.WARNING, (teacherSymbol + ": ConversationId == null : sender: "
                        + msg.getSender().getLocalName() + "; content: " + msg.getContent()));
                return;
            }
            switch (msg.getConversationId()) {
                case ScheduleNegotiationBehaviour.NEGOTIATION_START_NEXT_PART:
                    negotiationNextPart();
                    break;
                case ScheduleNegotiationBehaviour.ACCEPT_PROPOSAL:
                    acceptProposal();
                    break;
                case ScheduleNegotiationBehaviour.REJECT_PROPOSAL:
                    rejectProposal();
                    break;
                case ScheduleReorganizationBehaviour.REORGANIZATION_SEARCH_NEW_PLACE:
                    try {
                        searchNewPlaceNegotiationBeginning((Object[]) msg.getContentObject());
                    } catch (UnreadableException ex) {
                        logger.log(Level.WARNING, "SEARCH NEW PLACE NEGOTIATION BEGINNING", ex);
                    }
                    break;
                default:
                    notUnderstandMessage(msg.getSender().getLocalName(), msg.getConversationId());
                    break;
            }
        } else {
            block();
        }
    }