{m : Type → Type} →
  {α : Type} →
    [Monad m] →
      [Lean.Elab.MonadMacroAdapter m] →
        [Lean.MonadEnv m] →
          [Lean.MonadRecDepth m] →
            [Lean.MonadError m] →
              [Lean.MonadResolveName m] →
                [Lean.MonadTrace m] →
                  [Lean.MonadOptions m] → [Lean.AddMessageContext m] → [MonadLiftT IO m] → Lean.MacroM α → m α