code: def getitem(self, index, context=None):
          
          try:
              methods = dunder_lookup.lookup(self, "__getitem__")
          except exceptions.AttributeInferenceError as exc:
              raise exceptions.AstroidTypeError(node=self, context=context) from exc
  
          method = methods[0]
  
          # Create a new callcontext for providing index as an argument.
          new_context = contextmod.bind_context_to_node(context, self)
          new_context.callcontext = contextmod.CallContext(args=[index])
  
          try:
              return next(method.infer_call_result(self, new_context))
          except exceptions.InferenceError:
              return util.Uninferable
docs: Return the inference of a subscript.
  
          This is basically looking up the method in the metaclass and calling it.
  
          :returns: The inferred value of a subscript to this class.
          :rtype: NodeNG
  
          :raises AstroidTypeError: If this class does not define a
              ``__getitem__`` method.