HVACComponent ZoneHVACTerminalUnitVariableRefrigerantFlow_Impl::supplyAirFan() const {
    boost::optional<HVACComponent> value = optionalSupplyAirFan();
    if (!value) {
        LOG_AND_THROW(briefDescription() << " does not have an Supply Air Fan attached.");
    }
    return value.get();
}
 HVACComponent ZoneHVACEnergyRecoveryVentilator_Impl::supplyAirFan() const {
   boost::optional<HVACComponent> value = optionalSupplyAirFan();
   if (!value) {
     LOG_AND_THROW(briefDescription() << " does not have an Supply Air Fan attached.");
   }
   return value.get();
 }
 std::vector<ModelObject> ZoneHVACUnitHeater_Impl::children() const
 {
   std::vector<ModelObject> result;
   if (OptionalHVACComponent intermediate = optionalSupplyAirFan()) 
 {
   result.push_back(*intermediate);
 }
   if (OptionalHVACComponent intermediate = optionalHeatingCoil()) 
 {
     result.push_back(*intermediate);
   }
   return result;
 }
 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;
 }