@function __keys-in($map: null) {
  @if __is-falsey($map) {
    @return ();
  }

  $map: __to-map($map);
  $skip-keys: __const("CONSTRUCTOR_KEYS");

  @return __without(map-keys($map), $skip-keys...);
}

@function __keys($map: null) {
  // currently the same as __keys-in
  @return __keys-in($map);
}

/// Creates a list of the own enumerable keys of `$map`.
///
///
/// @access public
/// @group Map
/// @param {Map} $map The map to inspect.
/// @returns {List} Returns the list of keys.
/// @example scss
/// // todo

@function _keys($args...) {
  @return call(get-function("__keys"), $args...);
}

/// Creates a list of the own and inherited enumerable keys of `map`.
/// **Note:** Non-map values are coerced to maps.
///
///
/// @access public
/// @group Map
/// @param {Map} $map The map to inspect.
/// @returns {List} Returns the list of keys.
/// @example scss
/// // todo

@function _keys-in($args...) {
  @return call(get-function("__keys-in"), $args...);
}
