code: def complete_object_value(
      exe_context,  # type: ExecutionContext
      return_type,  # type: GraphQLObjectType
      field_asts,  # type: List[Field]
      info,  # type: ResolveInfo
      path,  # type: List[Union[int, str]]
      result,  # type: Any
  ):
      # type: (...) -> Dict[str, Any]
      
      if return_type.is_type_of and not return_type.is_type_of(result, info):
          raise GraphQLError(
              u'Expected value of type "{}" but got: {}.'.format(
                  return_type, type(result).__name__
              ),
              field_asts,
          )
  
      # Collect sub-fields to execute to complete this value.
      subfield_asts = exe_context.get_sub_fields(return_type, field_asts)
      return execute_fields(exe_context, return_type, result, subfield_asts, path, info)
docs: Complete an Object value by evaluating all sub-selections.