TypeLiteral進化の先は?

Google guice Binder#bind(TypeLiteral<T> typeLiteral) が、バージョン1.0 の頃から存在し、
List<String> 等のバインド等、
 new AbstractModule(){
  protected void configure(){
   binder().bind(new TypeLiteral<List<String>>(){}).toInstance(new ArrayList<String>());
     :
みたいなことをしていた。
この TypeLiteral<T> に、Google guice2.0 では、新たに次のメソッドが追加されている。

public TypeLiteral<?> getReturnType(Method method)
public List<TypeLiteral<?>> getExceptionTypes(Member methodOrConstructor)
public List<TypeLiteral<?>> getParameterTypes(Member methodOrConstructor)
public TypeLiteral<?> getFieldType(Field field)
public TypeLiteral<?> getSupertype(Class<?> supertype)


いずれも TypeLiteral を戻り値として取得できるので、bind 対象の限定の方法が機能UPできる。
例えば、java.util.Map は、keySet という Set<K> を返すメソッドがあるので、、、

TypeLiteral<Map<Integer,String>> mapType = new TypeLiteral<Map<Integer, String>>(){};
TypeLiteral<?> keySetType = mapType.getReturnType(Map.class.getMethod("keySet"));

 System.out.println(keySetType);

の結果は

java.util.Set<java.lang.Integer>

になる。