/**
   * A process is using this method to put lane it has used back in the HoldingArea.
   *
   * @param l <code>Lane</code>: The lane which should be returned to the HoldingArea.
   */
  public void takeBack(Lane l) {

    // take back the lane as Res
    this.lanes.takeBack(1);

    // insert the line to the lanes queue
    this.laneQueue.insert(l);
    if (currentlySendTraceNotes())
      sendTraceNote("releases " + l.getName() + " to the " + this.getName());
  }
  /**
   * Gets a Line from the HoldingArea and provides it to the sim-process to use it. As not enough
   * lanes are available at the moment the sim-process has to wait in a queue until a lane is
   * available again.
   *
   * @return <code>Lane</code>: The available lane of this HoldingArea.
   */
  public Lane getLane() {

    // check if there're available lanes
    if (!this.lanes.provide(1)) return null;

    // get the lane from the queue of the lanes
    Lane lane = this.laneQueue.first();

    // trace that a lane was taken from this HO
    if (currentlySendTraceNotes())
      sendTraceNote("takes " + lane.getName() + " from the " + this.getName());

    // remove lane from the Queue
    this.laneQueue.remove(lane);

    return lane;
  }