code: def _make_concat_multiindex(indexes, keys, levels=None, names=None):
      if (levels is None and isinstance(keys[0], tuple)) or (
          levels is not None and len(levels) > 1
      ):
          zipped = compat.lzip(*keys)
          if names is None:
              names = [None] * len(zipped)
  
          if levels is None:
              _, levels = _factorize_from_iterables(zipped)
          else:
              levels = [ensure_index(x) for x in levels]
      else:
          zipped = [keys]
          if names is None:
              names = [None]
  
          if levels is None:
              levels = [ensure_index(keys)]
          else:
              levels = [ensure_index(x) for x in levels]
  
      if not _all_indexes_same(indexes):
          codes_list = []
  
          # things are potentially different sizes, so compute the exact codes
          # for each level and pass those to MultiIndex.from_arrays
  
          for hlevel, level in zip(zipped, levels):
              to_concat = []
              for key, index in zip(hlevel, indexes):
                  try:
                      i = level.get_loc(key)
                  except KeyError:
                      raise ValueError(
                          "Key {key!s} not in level {level!s}".format(
                              key=key, level=level
                          )
                      )
  
                  to_concat.append(np.repeat(i, len(index)))
              codes_list.append(np.concatenate(to_concat))
  
          concat_index = _concat_indexes(indexes)
  
          # these go at the end
          if isinstance(concat_index, MultiIndex):
              levels.extend(concat_index.levels)
              codes_list.extend(concat_index.codes)
          else:
              codes, categories = _factorize_from_iterable(concat_index)
              levels.append(categories)
              codes_list.append(codes)
  
          if len(names) == len(levels):
              names = list(names)
          else:
              # make sure that all of the passed indices have the same nlevels
              if not len({idx.nlevels for idx in indexes}) == 1:
                  raise AssertionError(
                      "Cannot concat indices that do"
                      " not have the same number of levels"
                  )
  
              # also copies
              names = names + _get_consensus_names(indexes)
  
          return MultiIndex(
              levels=levels,
              codes=codes_list,
              names=names,
              verify_integrity=False,
          )
  
      new_index = indexes[0]
      n = len(new_index)
      kpieces = len(indexes)
  
      # also copies
      new_names = list(names)
      new_levels = list(levels)
  
      # construct codes
      new_codes = []
  
      # do something a bit more speedy
  
      for hlevel, level in zip(zipped, levels):
          hlevel = ensure_index(hlevel)
          mapped = level.get_indexer(hlevel)
  
          mask = mapped == -1
          if mask.any():
              raise ValueError(
                  "Values not found in passed level: {hlevel!s}".format(
                      hlevel=hlevel[mask]
                  )
              )
  
          new_codes.append(np.repeat(mapped, n))
  
      if isinstance(new_index, MultiIndex):
          new_levels.extend(new_index.levels)
          new_codes.extend(
              [np.tile(lab, kpieces) for lab in new_index.codes]
          )
      else:
          new_levels.append(new_index)
          new_codes.append(np.tile(np.arange(n), kpieces))
  
      if len(new_names) < len(new_levels):
          new_names.extend(new_index.names)
  
      return MultiIndex(
          levels=new_levels,
          codes=new_codes,
          names=new_names,
          verify_integrity=False,
      )
  
imports: import numpy
  import pandas.core.dtypes.concat
  from pandas import DataFrame, Index, MultiIndex, Series, compat
  from pandas.core import common
  from pandas.core.arrays.categorical import _factorize_from_iterable, _factorize_from_iterables
  from pandas.core.generic import NDFrame
  from pandas.core.index import _all_indexes_same, _get_consensus_names, _get_objs_combined_axis, ensure_index
  import pandas.core.indexes.base
  from pandas.core.internals import concatenate_block_managers
label_desc: Use image node_id 3 for calling a global function with example usage: _make_concat_multiindex(indexes, keys, levels, names) and returns: MultiIndex, MultiIndex