Wrapper / guts:
- Refactor global function wrapping
- Implement method caching
  => Implemented for struct accessors
  => Needs implementation for the general case
  ===> Implementation for non-overloaded methods that either just checks
       the number of arguments or at least just checks the SPECIFIC types
       of the arguments (without going via the expensive prototype calculation)
  ===> Implementation for overloaded methods. Can be optimized to break out of
       a validation loop based in argument types.
- Implement can()
- Fix Color_t lookup and other primitive types
  (Note: I might have fixed this by accident. SetLineColor(int) now works. Does GetLineColor?)
- Investigate wrapping all/more enums
- Investigate references
- Implement TTree/Branch (arguments-as-return-values)
- Implement TList? / TFile::GetListOfKeys? => see examples/Basic/bill.pl 
- Assignment operators
  => Specifically, consider "gRandom = new TRandom(...);" in C.
     There is no equivalent in Perl beacuse "$gRandom = TRandom->new()" will
     just overwrite the Perl object and the ROOT objects will internally
     use the C-level gRandom which is no longer referenced by $gRandom.
  => General solution is a proper cross-language memory
     management / ownership setup (PyROOT?)
  => Reasonably simple stop-gap solution would be, for example, to
     overload CODE dereferencing for TObjects to behave as assignment operators.
     The above C code could become: "$gRandom->(...)".
  ====> While mostly implemented now, this still fails on the const qualifier. Doh.
- Either lose the silly overloading or add string overloading to get the refaddr
  (If so, add bool overloading, too)

Packaging:
- Investigate ROOT's build system and how SOOT could be integrated
  without sacrificing CPAN-installation. (Specifically, investigate
  inlining of dependencies.)
  => Works locally, but is really hacky.
  => Problems with how a tree of files can be installed by the same means
     as the rest of ROOT. Need hookable "make install" target.
- Convert to using Module::Build::WithXSpp
- Use ExtUtils::Typemap::* instead of shipping perlobject.map, etc

Documentation / UI:
- Convert more examples and fix the ensuing madness.
- Check existing examples/ for FIXME's.
- ROOTSYS/tutorials to comply with Rene's requirements for inclusion.
- Document the SOOT <-> ROOT differences
=> TArray*!

Testing:
- Much, much more testing...
- Specifically expose more guts via SOOT::API for unit testing.
=> joincproto and friends
=> global variable tools


BUGS:
- delete doesn't work as expected:
$ $g = TGraph->new(1, [1.],[1.])
$TGraph1 = \do { my $v = 79536896 };
bless( $TGraph1, 'TGraph' );
$ $g2 = $g->as('TGraph')
$TGraph1 = \do { my $v = 79536896 };
bless( $TGraph1, 'TGraph' );
$ $g3 = $g->as('TGraph')
$TGraph1 = \do { my $v = 79536896 };
bless( $TGraph1, 'TGraph' );
$ $g3->delete;
$ $g3
INT
$ print Dumper $g
$VAR1 = bless( do{\(my $o = 79536896)}, 'TGraph' );
$ print Dumper $g2
$VAR1 = bless( do{\(my $o = 79536896)}, 'TGraph' );
$ print Dumper $g3
Runtime error: Bizarre copy of IO in anonlist at /usr/local/lib/perl/5.10.0/Data/Dumper.pm line 553.