public List<Event> convertLabelPlaceToEventList(List<LabelPlaceTraces> traces) {

    List<Event> eventList = new ArrayList<Event>();
    Place preLoc = null;
    int preExitTime = 0;
    for (int i = 0; i < traces.size(); i++) {
      Place curPlace = dictionary.getPlace(traces.get(i).id);

      if (curPlace == null && preLoc != null) { // exit
        Event event =
            new Event(
                new State(preLoc, traces.get(i - 1).timeInMin / 30),
                "exit",
                traces.get(i - 1).timeInMin);
        eventList.add(event);
      }

      /*
      Entry
       */
      if ((preLoc == null && curPlace != null)) {
        Event event =
            new Event(
                new State(curPlace, traces.get(i).timeInMin / 30),
                "entry",
                traces.get(i).timeInMin);
        eventList.add(event);
      }

      if ((preLoc != null && curPlace != null && preLoc.id != curPlace.id)) {
        Event event =
            new Event(
                new State(preLoc, traces.get(i - 1).timeInMin / 30),
                "exit",
                traces.get(i - 1).timeInMin + 2);
        eventList.add(event);
        event =
            new Event(
                new State(curPlace, traces.get(i).timeInMin / 30),
                "entry",
                traces.get(i).timeInMin);
        eventList.add(event);
      }
      preLoc = curPlace;
    }

    return eventList;
  }