bug for thriftCodec cache , which 'MAP/SET/LIST' has difference valueTyp...

bug for thriftCodec cache , which 'MAP/SET/LIST' has difference valueType or keyType.

In my case : 
service Service1{
  map<i32 , i32> query1();
}

service Service2{
   map<i32,TObject> query2();
}

while I start the server ,
NiftyProcessor processor = new ThriftServiceProcessor(new ThriftCodecManager(),
                        Arrays.asList(new ThriftEventHandler[] {  }),
                        context.getBean("service1"), context.getBean("service2"));

and I call the method query2(), it will cause an exception : 
java.lang.IllegalArgumentException: argument type mismatch
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_51]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_51]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_51]
	at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_51]
	at com.facebook.swift.codec.internal.coercion.CoercionThriftCodec.write(CoercionThriftCodec.java:62) ~[swift-codec-0.12.0.jar:0.12.0]
	at com.facebook.swift.codec.internal.TProtocolWriter.writeMap(TProtocolWriter.java:299) ~[swift-codec-0.12.0.jar:0.12.0]