code: def get_collection(self, service_name, collection_name, base_class=None):
          
          try:
              return self.cache.get_collection(
                  service_name,
                  collection_name,
                  base_class=base_class
              )
          except NotCached:
              pass
  
          # We didn't find it. Construct it.
          new_class = self.collection_factory.construct_for(
              service_name,
              collection_name,
              base_class=base_class
          )
          self.cache.set_collection(service_name, collection_name, new_class)
          return new_class
docs: Returns a ``Collection`` **class** for a given service.
  
          :param service_name: A string that specifies the name of the desired
              service. Ex. ``sqs``, ``sns``, ``dynamodb``, etc.
          :type service_name: string
  
          :param collection_name: A string that specifies the name of the desired
              class. Ex. ``QueueCollection``, ``NotificationCollection``,
              ``TableCollection``, etc.
          :type collection_name: string
  
          :param base_class: (Optional) The base class of the object. Prevents
              "magically" loading the wrong class (one with a different base).
          :type base_class: class
  
          :rtype: <kotocore.collections.Collection subclass>