# `Reach.Evidence.RepresentationOverlap.MapShape`
[🔗](https://github.com/elixir-vibe/reach/blob/v2.8.4/lib/reach/evidence/representation_overlap.ex#L22)

A bare-map construction and its observed shape and provenance.

# `function_id`

```elixir
@type function_id() :: {module(), atom(), non_neg_integer()}
```

# `normalization_target`

```elixir
@type normalization_target() ::
  nil | :boundary_call | :struct_constructor | {:call, atom(), atom()}
```

# `role`

```elixir
@type role() :: :accumulator | :domain | :presentation
```

# `t`

```elixir
@type t() :: %Reach.Evidence.RepresentationOverlap.MapShape{
  column: pos_integer() | nil,
  file: Path.t(),
  function: function_id(),
  keys: [atom()],
  line: pos_integer() | nil,
  module: module(),
  normalized_into: normalization_target(),
  projection?: boolean(),
  projection_sources: [atom()],
  role: role(),
  variable: atom() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
