docs: def joined_units(self):
          """
          A list view of all the units joined on this relation.
  
          This is actually a
          :class:`~charms.reactive.endpoints.CombinedUnitsView`, so the units
          will be in order by unit name, and you can access a merged view of all
          of the units' data with ``self.units.received`` and
          ``self.units.received``.  You should be very careful when using the
          merged data collections, however, and consider carefully what will
          happen when there are multiple remote units.  It is probabaly better to
          iterate over each unit and handle its data individually.  See
          :class:`~charms.reactive.endpoints.CombinedUnitsView` for an
          explanation of how the merged data collections work.
  
          The view can be iterated and indexed as a list, or you can look up units
          by their unit name.  For example::
  
              by_index = relation.units[0]
              by_name = relation.units['unit/0']
              assert by_index is by_name
              assert all(unit is relation.units[unit.unit_name]
                         for unit in relation.units)
              print(', '.join(relation.units.keys()))
          """
          if self._units is None:
              self._units = CombinedUnitsView([
                  RelatedUnit(self, unit_name) for unit_name in
                  sorted(hookenv.related_units(self.relation_id))
              ])
          return self._units