@type ref() :: [String.t()]
@type t() :: %{required(ref()) => MapSet.t()}
@spec apply_move(t(), ref(), list(), :move_in | :move_out) :: t()
@spec current(t(), ref()) :: MapSet.t()