Convert InjectableMembers to LinkedList<InjectableMember>. Presumably, it may be slower, but it's easier to work with.  I can revert this change later once I get my other changes working
(cherry picked from commit e608fa1)
Add caching of injectable fields to avoid re-doing reflection for classes that were previously scanned.
This is for fields only, it does not support methods yet.
remove unnecessary tmp list
remove an OverrideIndex optimization to make refactoring easier
minor
minor
Add a test and fix a bug in field caching
Convert iteration to recursion and add caching.
Caching may make this method faster, but I removed a lot of optimizations that were in the method previously that i may want to consider adding back.
Revert "Convert iteration to recursion and add caching."

Broke a bunch of testcases I was accidentally skipping

This reverts commit 85de882e7d5b2d39a7db15c09c664d0064b93b7a.
Revert caching since it's breaking tests
switch from iteration to recursion to make it easier to figure out how to optimize
Add caching of injectable methods by typeliteral.
All tests pass in maven, testOverriddingMixedWithPackagePrivate3 fails in intellij for some reason though.
Add OverrideIndex position optimization back in
Cache results of Class.getGenericSuperclass for significant performance improvement (20-30% on Astroboy1Test)
Cache another use of Class.getGenericSupertype
Guice optimization to allow filtering during binding phase. Some classes can be excluded to speed up Guice startup. These optimizations are related to RoboGuice fork : https://github.com/stephanenicolas/roboguice/tree/optim-startup2. Thanks to @emmby for reviewing the code.
With finer parsing
Reaching 250 ms