This is not an exhaustive list of TODO items.

* Write a bunch of tests for the exception API

* (More?) tests for user defined subs!

* Define roles properly.

* Trawl through perlfunc to find which things autodie may apply to.

* Generate a good way to allow subroutines to register themselves
  with roles and message handlers, possibly defining their own
  exception handler to use.

* Provide an autodie mixin which at least provides expected autodie
  behaviours, even if someone wants to use their own exception class.

* Provide a nicer way to override message handlers.

* Finalise the exception interface.

* Write a huge amount of documentation.

* Write a huge amount of tests.

* Test the many varied forms of sysopen.

* Test fcntl.

* !!! We need a proper way to override exceptions from system!

* Make sure that all the internal subroutines in Fatal continue to
  work using their old wacky interfaces.

* Test open(my $fh, '|-') || exec().

* Consider what happens when import is called at run-time!
  (Both in 5.10 and 5.8, but especially 5.8)

== Wishlist ==

* Reduce the number of lexical guards we need in our array.
  We should be able to combine these, or have a single guard
  that does the right thing.

* Think about padwalker integration.  This can give us really
  pretty errors!

* Catch require/do and remove any autodying subs upon entry.
  At the end of file, replace them.  This is a better solution
  to using leak-guards, which require more time and space at
  run-time.