Add generic restriction
Adding type inference and type erasure part
Add small fixes
Merge pull request #2 from stavytskyi/java_generics

Java generics