private void handleTeleportationArrivals() { double now = internalInterface.getMobsim().getSimTimer().getTimeOfDay(); while (teleportationList.peek() != null) { Tuple<Double, MobsimAgent> entry = teleportationList.peek(); if (entry.getFirst() <= now) { teleportationList.poll(); MobsimAgent personAgent = entry.getSecond(); personAgent.notifyArrivalOnLinkByNonNetworkMode(personAgent .getDestinationLinkId()); double distance = personAgent.getExpectedTravelDistance(); this.eventsManager.processEvent(new TeleportationArrivalEvent(this.internalInterface.getMobsim().getSimTimer().getTimeOfDay(), personAgent.getId(), distance)); personAgent.endLegAndComputeNextState(now); this.teleportationData.remove(personAgent.getId()); internalInterface.arrangeNextAgentState(personAgent); } else { break; } } }