docs: def get_container_or_none(self, type_):
          """
          Returns reference to the class declaration or None.
  
          """
  
          type_ = type_traits.remove_alias(type_)
          type_ = type_traits.remove_cv(type_)
  
          utils.loggers.queries_engine.debug(
              "Container traits: cleaned up search %s", type_)
  
          if isinstance(type_, cpptypes.declarated_t):
              cls_declaration = type_traits.remove_alias(type_.declaration)
          elif isinstance(type_, class_declaration.class_t):
              cls_declaration = type_
          elif isinstance(type_, class_declaration.class_declaration_t):
              cls_declaration = type_
          else:
              utils.loggers.queries_engine.debug(
                  "Container traits: returning None, type not known\n")
              return
  
          if not cls_declaration.name.startswith(self.name() + '<'):
              utils.loggers.queries_engine.debug(
                  "Container traits: returning None, " +
                  "declaration starts with " + self.name() + '<\n')
              return
  
          # When using libstd++, some container traits are defined in
          # std::tr1::. See remove_template_defaults_tester.py.
          # In this case the is_defined_in_xxx test needs to be done
          # on the parent
          decl = cls_declaration
          if isinstance(type_, class_declaration.class_declaration_t):
              is_ns = isinstance(type_.parent, namespace.namespace_t)
              if is_ns and type_.parent.name == "tr1":
                  decl = cls_declaration.parent
          elif isinstance(type_, cpptypes.declarated_t):
              is_ns = isinstance(type_.declaration.parent, namespace.namespace_t)
              if is_ns and type_.declaration.parent.name == "tr1":
                  decl = cls_declaration.parent
  
          for ns in std_namespaces:
              if traits_impl_details.impl_details.is_defined_in_xxx(ns, decl):
                  utils.loggers.queries_engine.debug(
                      "Container traits: get_container_or_none() will return " +
                      cls_declaration.name)
                  # The is_defined_in_xxx check is done on decl, but we return
                  # the original declation so that the rest of the algorithm
                  # is able to work with it.
                  return cls_declaration
  
          # This should not happen
          utils.loggers.queries_engine.debug(
              "Container traits: get_container_or_none() will return None\n")