HVACComponent ZoneHVACEnergyRecoveryVentilator_Impl::heatExchanger() const {
   boost::optional<HVACComponent> value = optionalHeatExchanger();
   if (!value) {
     LOG_AND_THROW(briefDescription() << " does not have an Heat Exchanger attached.");
   }
   return value.get();
 }
 AirToAirComponent CoilSystemCoolingWaterHeatExchangerAssisted_Impl::heatExchanger() const {
   boost::optional<AirToAirComponent> value = optionalHeatExchanger();
   if (!value) {
     LOG_AND_THROW(briefDescription() << " does not have an Heat Exchanger attached.");
   }
   return value.get();
 }
 std::vector<ModelObject> ZoneHVACEnergyRecoveryVentilator_Impl::children() const
 {
   std::vector<ModelObject> result;
   if (auto const intermediate = optionalSupplyAirFan()) {
     result.push_back(intermediate.get());
   }
   if (auto const intermediate = optionalExhaustAirFan()) {
     result.push_back(intermediate.get());
   }
   if (auto const intermediate = optionalHeatExchanger()) {
     result.push_back(intermediate.get());
   }
   if (auto const intermediate = controller()) {
     result.push_back(intermediate.get());
   }
   return result;
 }