code: def mode(
      values: ArrayLike,
      dropna: bool = True,
      mask: npt.NDArray[np.bool_] | None = None,
  ) -> ArrayLike:
      """
      Returns the mode(s) of an array.
  
      Parameters
      ----------
      values : array-like
          Array over which to check for duplicate values.
      dropna : bool, default True
          Don't consider counts of NaN/NaT.
  
      Returns
      -------
      np.ndarray or ExtensionArray
      """
      values = _ensure_arraylike(values, func_name="mode")
      original = values
  
      if needs_i8_conversion(values.dtype):
          # Got here with ndarray; dispatch to DatetimeArray/TimedeltaArray.
          values = ensure_wrapped_if_datetimelike(values)
          values = cast("ExtensionArray", values)
          return values._mode(dropna=dropna)
  
      values = _ensure_data(values)
  
      npresult, res_mask = htable.mode(values, dropna=dropna, mask=mask)
      if res_mask is not None:
          return npresult, res_mask  # type: ignore[return-value]
  
      try:
          npresult = np.sort(npresult)
      except TypeError as err:
          warnings.warn(
              f"Unable to sort modes: {err}",
              stacklevel=find_stack_level(),
          )
  
      result = _reconstruct_data(npresult, original.dtype, original)
      return result
  
imports: from __future__ import annotations
  import decimal
  import operator
  from textwrap import dedent
  from typing import TYPE_CHECKING, Literal, cast
  import warnings
  import numpy
  from pandas._libs import algos, hashtable, iNaT, lib
  from pandas._typing import AnyArrayLike, ArrayLike, ArrayLikeT, AxisInt, DtypeObj, TakeIndexer, npt
  from pandas.util._decorators import doc
  from pandas.util._exceptions import find_stack_level
  from pandas.core.dtypes.cast import construct_1d_object_array_from_listlike, np_find_common_type
  from pandas.core.dtypes.common import ensure_float64, ensure_object, ensure_platform_int, is_array_like, is_bool_dtype, is_complex_dtype, is_dict_like, is_extension_array_dtype, is_float, is_float_dtype, is_integer, is_integer_dtype, is_list_like, is_object_dtype, is_signed_integer_dtype, needs_i8_conversion
  from pandas.core.dtypes.concat import concat_compat
  from pandas.core.dtypes.dtypes import BaseMaskedDtype, CategoricalDtype, ExtensionDtype, NumpyEADtype
  from pandas.core.dtypes.generic import ABCDatetimeArray, ABCExtensionArray, ABCIndex, ABCMultiIndex, ABCSeries, ABCTimedeltaArray
  from pandas.core.dtypes.missing import isna, na_value_for_dtype
  from pandas.core.array_algos.take import take_nd
  from pandas.core.construction import array, ensure_wrapped_if_datetimelike, extract_array
  from pandas.core.indexers import validate_indices
label_desc: Use image node_id 16 for calling a global function with example usage: mode(values, dropna, mask) and returns: result, values, npresult,  res_mask