docs: def merge_core(objs,
                 compat='broadcast_equals',
                 join='outer',
                 priority_arg=None,
                 explicit_coords=None,
                 indexes=None):
      """Core logic for merging labeled objects.
  
      This is not public API.
  
      Parameters
      ----------
      objs : list of mappings
          All values must be convertable to labeled arrays.
      compat : {'identical', 'equals', 'broadcast_equals', 'no_conflicts'}, optional
          Compatibility checks to use when merging variables.
      join : {'outer', 'inner', 'left', 'right'}, optional
          How to combine objects with different indexes.
      priority_arg : integer, optional
          Optional argument in `objs` that takes precedence over the others.
      explicit_coords : set, optional
          An explicit list of variables from `objs` that are coordinates.
      indexes : dict, optional
          Dictionary with values given by pandas.Index objects.
  
      Returns
      -------
      variables : OrderedDict
          Ordered dictionary of Variable objects.
      coord_names : set
          Set of coordinate names.
      dims : dict
          Dictionary mapping from dimension names to sizes.
  
      Raises
      ------
      MergeError if the merge cannot be done successfully.
      """  # noqa
      from .dataset import calculate_dimensions
  
      _assert_compat_valid(compat)
  
      coerced = coerce_pandas_values(objs)
      aligned = deep_align(coerced, join=join, copy=False, indexes=indexes)
      expanded = expand_variable_dicts(aligned)
  
      coord_names, noncoord_names = determine_coords(coerced)
  
      priority_vars = _get_priority_vars(aligned, priority_arg, compat=compat)
      variables = merge_variables(expanded, priority_vars, compat=compat)
      assert_unique_multiindex_level_names(variables)
  
      dims = calculate_dimensions(variables)
  
      if explicit_coords is not None:
          assert_valid_explicit_coords(variables, dims, explicit_coords)
          coord_names.update(explicit_coords)
  
      for dim, size in dims.items():
          if dim in variables:
              coord_names.add(dim)
  
      ambiguous_coords = coord_names.intersection(noncoord_names)
      if ambiguous_coords:
          raise MergeError('unable to determine if these variables should be '
                           'coordinates or not in the merged result: %s'
                           % ambiguous_coords)
  
      return variables, coord_names, dict(dims)