docs: def list_shares(self, prefix=None, marker=None, num_results=None, 
                      include_metadata=False, timeout=None):
          '''
          Returns a generator to list the shares under the specified account.
          The generator will lazily follow the continuation tokens returned by
          the service and stop when all shares have been returned or num_results 
          is reached.
  
          If num_results is specified and the account has more than that number of 
          shares, the generator will have a populated next_marker field once it 
          finishes. This marker can be used to create a new generator if more 
          results are desired.
  
          :param str prefix:
              Filters the results to return only shares whose names
              begin with the specified prefix.
          :param int num_results:
              Specifies the maximum number of shares to return.
          :param bool include_metadata:
              Specifies that share metadata be returned in the response.
          :param str marker:
              An opaque continuation token. This value can be retrieved from the 
              next_marker field of a previous generator object if num_results was 
              specified and that generator has finished enumerating results. If 
              specified, this generator will begin returning results from the point 
              where the previous generator stopped.
          :param int timeout:
              The timeout parameter is expressed in seconds.
          '''
          include = 'metadata' if include_metadata else None
          kwargs = {'prefix': prefix, 'marker': marker, 'max_results': num_results, 
                  'include': include, 'timeout': timeout}
          resp = self._list_shares(**kwargs)
  
          return ListGenerator(resp, self._list_shares, (), kwargs)