private void convertToDirectionList() {
    int index = 0;
    for (Leg leg : legs) {
      index++;
      setTotalDistance(getTotalDistance() + leg.distance);

      TraverseMode traverseMode = TraverseMode.valueOf((String) leg.mode);
      if (traverseMode.isOnStreetNonTransit()) {
        Direction dir = generateNonTransitDirections(leg);
        if (dir == null) {
          continue;
        }
        dir.setDirectionIndex(index);
        addDirection(dir);
      } else {
        ArrayList<Direction> directions = generateTransitDirections(leg);
        if (directions == null) {
          continue;
        }

        if (directions.get(0) != null) {
          directions.get(0).setDirectionIndex(index);
          addDirection(directions.get(0));
        }

        if (directions.get(1) != null) {
          if (directions.get(0) != null) {
            index++;
          }
          directions.get(1).setDirectionIndex(index);
          addDirection(directions.get(1));
        }
      }
    }
  }