Module.get_definition

You're seeing just the function get_definition, go back to Module module for more information.
Link to this function

get_definition(module, arg)

View Source (since 1.12.0)

Specs

get_definition(module(), definition()) ::
  {:v1, def_kind(), meta :: keyword(),
   [
     {meta :: keyword(), arguments :: [Macro.t()], guards :: [Macro.t()],
      Macro.t()}
   ]}

Returns the definition for the given name-arity pair.

It returns a tuple with the version, the kind, the definition metadata, and a list with each clause. Each clause is a four-element tuple with metadata, the arguments, the guards, and the clause AST.

The clauses are returned in the Elixir AST but a subset that has already been expanded and normalized. This makes it useful for analyzing code but it cannot be reinjected into the module as it will have lost some of its original context. Given this AST representation is mostly internal, it is versioned and it may change at any time. Therefore, use this API with caution.