/**
   * Deliver a certain message.
   *
   * @param message the message to be delivered
   */
  @Override
  protected void send(final Message<int[]> message) {
    final int k;

    k = this.m_traits[message.m_owner.m_index];

    if (this.m_manager.modify(
        message,
        ((k & ByzantineType.SEND_SAME_ERRORS) != 0),
        ((k & ByzantineType.SELDOMLY_SEND) != 0))) {
      super.send(message);
    }
  }
  /**
   * This method is called right before the simulation begins.
   *
   * @throws IllegalStateException if this simulation is already running.
   */
  @Override
  public void beginSimulation() {
    int i;

    super.beginSimulation();

    i = this.getSimulationIndex();

    this.m_traits = this.m_traitors[i];
    this.m_manager.reset(i);
    // this.m_err = this.m_errors[i];
    // this.m_errIdx = 0;
  }
  /**
   * deliver the message <code>message</code> to the node at index <code>to</code>.
   *
   * @param message the message to be delivered
   * @param to the node to deliver to
   */
  @SuppressWarnings("unchecked")
  @Override
  protected void deliver(final Message<int[]> message, final NetVirtualMachine<MT, PT, int[]> to) {
    final int k;

    k = this.m_traits[message.m_owner.m_index];

    if (this.m_manager.modify(
        message,
        ((k & ByzantineType.SEND_DIFFERENT_ERRORS) != 0),
        ((k & ByzantineType.SELDOMLY_RECEIVED) != 0))) {
      super.deliver(message, to);
    }
  }