private void getSRLReceive(SRLReceive receive, long ts) {
    FieldValues values = new FieldValues();
    // addProcess(event.getSenderProcess());
    // addProcess(event.getAddresseeProcess());
    values.addIntValue(receive.getReceiverInstance());
    values.addStringValue(receive.getPort().toString());
    values.addIntValue(receive.getPortIndex().intValue());
    values.addIntValue(receive.getMessageAddress().intValue());

    client.eventRead(
        new RoseReceiveEventInfo(
            ts,
            777,
            receive.getReceiverId(),
            receive.getSentAt(),
            receive.getSignal(),
            receive.getStateId(),
            receive.getTs(),
            EventFactory.ROSE_RECEIVE_EVENT_TYPE_ID,
            values));
  }
  private void getRoseReceive(TypedCircularMessage message, long ts) {
    final UmlStateMachine machine =
        getStatemachineByName(getValue(message, SRLEventReader.FN_RECEIVER_ACTOR).toString());
    Object fnState = getValue(message, SRLEventReader.FN_STATE);
    UmlState state = null;
    if (fnState != null) {
      state = getStateByName(fnState.toString(), machine);
    }
    final Long msgAddr = (Long) getValue(message, SRLEventReader.FN_MSG_ADDR);
    final long high = (Long) getValue(message, FINISH_HI);
    final long low = (Long) getValue(message, FINISH_LO);
    Long sentAt = getSentAt(msgAddr);
    SRLReceive receive = new SRLReceive();
    receive.setReceiverId(machine.getId());
    receive.setReceiverInstance(
        ((Long) getValue(message, SRLEventReader.FN_RECEIVER_ACTOR_INSTANCE)).intValue());
    receive.setReceiverReplicationIndex(
        ((Long) getValue(message, SRLEventReader.FN_RECEIVER_ACTOR_REPLICATION_INDEX)).intValue());
    if (state == null) {
      receive.setStateId(-1);
    } else {
      receive.setStateId(state.getId());
    }
    receive.setSignal(getValue(message, SRLEventReader.FN_SIGNAL).toString());
    receive.setPort(getValue(message, SRLEventReader.FN_PORT).toString());
    receive.setPortIndex(((Long) getValue(message, SRLEventReader.FN_PORT_INDEX)));
    receive.setMessageAddress(msgAddr);

    long finishTime = resolveTimeStamp((high << 32) + low);
    finishTime = convertTime(finishTime);

    receive.setTs(finishTime);
    receive.setSentAt(sentAt);
    getSRLReceive(receive, ts);
  }
  public void getUMLreceive(TypedCircularMessage message, long ts) {
    UmlReceive umlReceive = new UmlReceive(message);

    MentorIndex index = blackbox.getMentorIndex();
    long receiverClassId = umlReceive.getReceiverClassId();
    String receiverClassName = index.getClazz((int) receiverClassId);
    if (receiverClassName == null) {
      receiverClassName = "UnknownClassName";
    }

    final UmlStateMachine machine = getStatemachineByName(receiverClassName);

    SRLReceive receive = new SRLReceive();

    receive.setReceiverId(machine.getId());
    receive.setReceiverInstance(umlReceive.getReceiverInstanceId());
    receive.setReceiverReplicationIndex(0);

    long stateId = umlReceive.getNextStateId();
    String stateName = index.getState((int) stateId);
    UmlState umlState = getStateByName(stateName, machine);
    receive.setStateId(umlState.getId());

    long signalId = umlReceive.getSignalId();
    String signalName = index.getSignal((int) signalId);
    receive.setSignal(signalName);
    Long signalInstanceId = umlReceive.getSignalInstanceId();
    receive.setMessageAddress(signalInstanceId);
    Long sentAt = getSentAt(signalInstanceId);
    receive.setSentAt(sentAt);

    receive.setPort("");
    receive.setPortIndex(Long.valueOf(0));

    final long high = umlReceive.getFinishHi();
    final long low = umlReceive.getFinishLo();

    long finishTime = resolveTimeStamp((high << 32) + low);
    finishTime = convertTime(finishTime);
    receive.setTs(finishTime);

    getSRLReceive(receive, ts);

    return;
  }