This is not an exhaustive list of TODO items.

* Write a bunch of tests for the exception API

* Remove :lexical tests in t/* and convert them to using
  autodie.  The :lexical option is no longer officially supported in
  Fatal.  These tests may be allowable in an t/internal.t file.

* (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.

== 5.8 / The One True Autodie ==

* Support 're-instating' original subs when we've used autodie
  on user subs, or when we've used 'no autodie ...' to turn
  off a sub until the end of a scope.

	* We do this now!  Or we should.  More tests are needed.

* 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.
