use lazy type resolvers to improved perf for generic type reification
Merge remote-tracking branch 'origin/java8' into java8