code: def complete_object_value(
          self,
          return_type: GraphQLObjectType,
          field_nodes: List[FieldNode],
          info: GraphQLResolveInfo,
          path: ResponsePath,
          result: Any,
      ) -> AwaitableOrValue[Dict[str, Any]]:
          
          # If there is an `is_type_of()` predicate function, call it with the current
          # result. If `is_type_of()` returns False, then raise an error rather than
          #  continuing execution.
          if return_type.is_type_of:
              is_type_of = return_type.is_type_of(result, info)
  
              if isawaitable(is_type_of):
  
                  async def collect_and_execute_subfields_async():
                      if not await is_type_of:
                          raise invalid_return_type_error(
                              return_type, result, field_nodes
                          )
                      return self.collect_and_execute_subfields(
                          return_type, field_nodes, path, result
                      )
  
                  return collect_and_execute_subfields_async()
  
              if not is_type_of:
                  raise invalid_return_type_error(return_type, result, field_nodes)
  
          return self.collect_and_execute_subfields(
              return_type, field_nodes, path, result
          )
docs: Complete an Object value by executing all sub-selections.