private TransitLegBean reverseTransitLeg(TransitLegV2Bean leg) {

    TransitLegBean bean = new TransitLegBean();

    String tripId = leg.getTripId();
    if (tripId != null && !tripId.isEmpty()) {
      TripBean trip = new TripBean();
      trip.setId(tripId);
      bean.setTrip(trip);
    }

    bean.setServiceDate(leg.getServiceDate());
    if (_factory.isStringSet(leg.getVehicleId())) bean.setVehicleId(leg.getVehicleId());

    FrequencyV2Bean frequency = leg.getFrequency();
    if (frequency != null) {
      FrequencyBean freqBean = _factory.reverseFrequency(frequency);
      bean.setFrequency(freqBean);
    }

    String fromStopId = leg.getFromStopId();
    if (_factory.isStringSet(fromStopId)) {
      StopBean stop = new StopBean();
      stop.setId(fromStopId);
      bean.setFromStop(stop);
      bean.setFromStopSequence(leg.getFromStopSequence());
    }

    bean.setScheduledDepartureTime(leg.getScheduledDepartureTime());

    String toStopId = leg.getToStopId();
    if (_factory.isStringSet(toStopId)) {
      StopBean stop = new StopBean();
      stop.setId(toStopId);
      bean.setToStop(stop);
      bean.setToStopSequence(leg.getToStopSequence());
    }

    bean.setScheduledArrivalTime(leg.getScheduledArrivalTime());

    return bean;
  }