Parse Elixir source and return its structural outline.
Each top-level defmodule becomes a node with its children:
defs, defmacros, attributes, directives, defstructs, nested modules.
Every node carries a line range so callers can Read just the
bytes they need.
Summary
Types
@type definition() :: map()