maps support and downward compatibility

maps support for 17,
and it also work for R16
maybe split this to 3 clauses like `when element(1, Tuple) == dict`, `when is_integer(element(1, Tuple))` and `when is_atom(element(1, Tuple))`?