acc() :: {element(), number()}
attrs() :: %{required(String.t()) => String.t()}
element() :: {element_types(), String.t(), attrs()}
element_types() :: :open | :const | :close
init() :: term()
print(element(), acc() | nil) :: {[String.t()], acc() | nil}