final Method[] methods = getImplementationMethods( proxyClasses );
JavassistUtils.addInterfaces( proxyClass, toInterfaces( proxyClasses ) );
JavassistUtils.addField( Method[].class, "methods", proxyClass );
JavassistUtils.addField( Object.class, "target", proxyClass );
JavassistUtils.addField( Interceptor.class, "interceptor", proxyClass );
final CtConstructor proxyConstructor = new CtConstructor(
JavassistUtils.resolve(
new Class[]{ Method[].class, Object.class, Interceptor.class } ),
proxyClass );
proxyConstructor
.setBody(
"{\n\tthis.methods = $1;\n\tthis.target = $2;\n\tthis.interceptor = $3; }" );
proxyClass.addConstructor( proxyConstructor );
for( int i = 0; i < methods.length; ++i )
{