docs: def _get_collection(self, collection_uri, request_headers=None):
          """Generator function that returns collection members."""
  
          # get the collection
          status, headers, thecollection = self._rest_get(collection_uri)
  
          if status != 200:
              msg = self._get_extended_error(thecollection)
              raise exception.IloError(msg)
  
          while status < 300:
              # verify expected type
              # Don't limit to version 0 here as we will rev to 1.0 at some
              # point hopefully with minimal changes
              ctype = self._get_type(thecollection)
              if (ctype not in ['Collection.0', 'Collection.1']):
                  raise exception.IloError("collection not found")
  
              # if this collection has inline items, return those
              # NOTE:  Collections are very flexible in how the represent
              # members.  They can be inline in the collection as members
              # of the 'Items' array, or they may be href links in the
              # links/Members array.  The could actually be both. Typically,
              # iLO implements the inline (Items) for only when the collection
              # is read only.  We have to render it with the href links when an
              # array contains PATCHable items because its complex to PATCH
              # inline collection members.
  
              if 'Items' in thecollection:
                  # iterate items
                  for item in thecollection['Items']:
                      # if the item has a self uri pointer,
                      # supply that for convenience.
                      memberuri = None
                      if 'links' in item and 'self' in item['links']:
                          memberuri = item['links']['self']['href']
                      yield 200, None, item, memberuri
  
              # else walk the member links
              elif ('links' in thecollection and
                    'Member' in thecollection['links']):
                  # iterate members
                  for memberuri in thecollection['links']['Member']:
                      # for each member return the resource indicated by the
                      # member link
                      status, headers, member = self._rest_get(memberuri['href'])
                      yield status, headers, member, memberuri['href']
  
              # page forward if there are more pages in the collection
              if ('links' in thecollection and
                      'NextPage' in thecollection['links']):
                  next_link_uri = (collection_uri + '?page=' + str(
                                   thecollection['links']['NextPage']['page']))
                  status, headers, thecollection = self._rest_get(next_link_uri)
  
              # else we are finished iterating the collection
              else:
                  break