This might be a different solution to the current implementation, that would be convenient and handle circular dependencies of relations well:
  final case class ExtendedRelation(
      id: Long,
      nodes: Set[Node],
      ways: Set[Way],
      relations: Set[Long],
      override val tags: Map[String, String],
      override val metaInformation: Option[MetaInformation]
  )
i.e. nodes and ways would be directly linked and relations indirectly via id, so that circular dependencies can be represented without breaking the model.
Currently, it is not (yet) clear if this is needed in practice.