-- | Folds OSM child elements (catamorphism).
foldChildren ::
  (User -> a) -- ^ If a @user@ element.
  -> (Preferences -> a) -- ^ If a @preferences@ element.
  -> (GpxFile -> a) -- ^ If a @gpx_file@ element.
  -> (Api -> a) -- ^ If a @api@ element.
  -> (Changeset -> a) -- ^ If a @changeset@ element.
  -> ([NodeWayRelation] -> a) -- ^ If a list of @node@, @way@ or @relation@ elements.
  -> Children -- ^ The disjunctive type of child elements.
  -> a
foldChildren z _ _ _ _ _ (User u) =
  z u
foldChildren ::
  (User -> a) -- ^ If a @user@ element.
  -> (Preferences -> a) -- ^ If a @preferences@ element.
  -> (GpxFile -> a) -- ^ If a @gpx_file@ element.
  -> (Api -> a) -- ^ If a @api@ element.
  -> (Changeset -> a) -- ^ If a @changeset@ element.
  -> ([NodeWayRelation] -> a) -- ^ If a list of @node@, @way@ or @relation@ elements.
  -> Children -- ^ The disjunctive type of child elements.
  -> a
foldChildren z _ _ _ _ _ (User u) =
  z u
foldChildren z _ _ _ _ _ (User u) =
  z u