private synchronized void defaultSend(Sim_event ev, int gisID, int statID,
                int shutdownID)
    {
        IO_data io = null;
        try
        {
            io = (IO_data) ev.get_data();

        }catch (ClassCastException e)
        {
           System.out.println("549 " + super.get_name() + ": ClassCastException. ev.tag: " + ev.get_tag());
        }

        int destId = io.getDestID();

        /*****   // DEBUG info
        System.out.println(super.get_name() + ".defaultSend(): Send to " +
            GridSim.getEntityName(destId) + " tag = " + ev.get_tag() );
        *****/

        // if this entity uses a network extension
        if (link_ != null && destId != gisID && destId != statID &&
            destId != shutdownID)
        {
            submitToLink(ev);
            return;
        }

        // Identify ID of an entity which acts as Input/Buffer
        // entity of destination entity
        int id = GridSim.getEntityId( "Input_" +
                 Sim_system.get_entity(destId).get_name() );

        // Send first and then hold
        super.sim_schedule(id, GridSimTags.SCHEDULE_NOW, ev.get_tag(), io);

        double receiverBaudRate = ( (NetIO)   //(Input)
                Sim_system.get_entity(id) ).getBaudRate();

        // NOTE: io is in byte and baud rate is in bits. 1 byte = 8 bits
        // So, convert io into bits
        double minBaudRate = Math.min(baudRate_, receiverBaudRate);
        double communicationDelay = GridSimRandom.realIO(
                (io.getByteSize() * BITS) / minBaudRate);

        // NOTE: Below is a deprecated method for SimJava 2
        //super.sim_hold(communicationDelay);
        super.sim_process(communicationDelay);
    }