Program: 53623
Project: 53623
Buggy source:
@Test public void testAddGetter() throws Exception {
  final TestClassLoader loader=getTestClassLoader();
  final String targetClassName="String_Node_Str";
  loader.addTransformer(targetClassName,new TransformCallback(){
    @Override public byte[] doInTransform(    Instrumentor instrumentor,    ClassLoader classLoader,    String className,    Class<?> classBeingRedefined,    ProtectionDomain protectionDomain,    byte[] classfileBuffer) throws InstrumentException {
      try {
        logger.info("String_Node_Str",classLoader);
        InstrumentClass aClass=instrumentor.getInstrumentClass(classLoader,className,classfileBuffer);
        aClass.addGetter(StringGetter.class.getName(),"String_Node_Str");
        aClass.addGetter(IntGetter.class.getName(),"String_Node_Str");
        return aClass.toBytecode();
      }
 catch (      InstrumentException e) {
        throw new RuntimeException(e.getMessage(),e);
      }
    }
  }
);
  loader.initialize();
  Object testObject=loader.loadClass(targetClassName).newInstance();
  Class<?> stringGetter=loader.loadClass(StringGetter.class.getName());
  Class<?> intGetter=loader.loadClass(IntGetter.class.getName());
  Assert.assertTrue(stringGetter.isInstance(testObject));
  Assert.assertTrue(intGetter.isInstance(testObject));
  String value="String_Node_Str";
  int intValue=99;
  Method method=testObject.getClass().getMethod("String_Node_Str",String.class);
  method.invoke(testObject,value);
  Method getString=stringGetter.getMethod("String_Node_Str");
  Assert.assertEquals(value,getString.invoke(testObject));
  Method setIntValue=testObject.getClass().getMethod("String_Node_Str",int.class);
  setIntValue.invoke(testObject,intValue);
  Method getInt=intGetter.getMethod("String_Node_Str");
  Assert.assertEquals(intValue,getInt.invoke(testObject));
}

Fixed version (ground truth):
@Test public void testAddGetter() throws Exception {
  final TestClassLoader loader=getTestClassLoader();
  final String targetClassName="String_Node_Str";
  loader.addTransformer(targetClassName,new TransformCallback(){
    @Override public byte[] doInTransform(    Instrumentor instrumentor,    ClassLoader classLoader,    String className,    Class<?> classBeingRedefined,    ProtectionDomain protectionDomain,    byte[] classfileBuffer) throws InstrumentException {
      try {
        logger.info("String_Node_Str",classLoader);
        InstrumentClass aClass=instrumentor.getInstrumentClass(classLoader,className,classfileBuffer);
        aClass.addGetter(StringGetter.class.getName(),"String_Node_Str");
        aClass.addGetter(IntGetter.class.getName(),"String_Node_Str");
        aClass.addGetter(IntArrayGetter.class.getName(),"String_Node_Str");
        aClass.addGetter(IntegerArrayGetter.class.getName(),"String_Node_Str");
        return aClass.toBytecode();
      }
 catch (      InstrumentException e) {
        throw new RuntimeException(e.getMessage(),e);
      }
    }
  }
);
  loader.initialize();
  Object testObject=loader.loadClass(targetClassName).newInstance();
  Class<?> stringGetter=loader.loadClass(StringGetter.class.getName());
  Class<?> intGetter=loader.loadClass(IntGetter.class.getName());
  Class<?> intsGetter=loader.loadClass(IntArrayGetter.class.getName());
  Class<?> integersGetter=loader.loadClass(IntegerArrayGetter.class.getName());
  Assert.assertTrue(stringGetter.isInstance(testObject));
  Assert.assertTrue(intGetter.isInstance(testObject));
  Assert.assertTrue(intsGetter.isInstance(testObject));
  Assert.assertTrue(integersGetter.isInstance(testObject));
  String value="String_Node_Str";
  int intValue=99;
  int[] intValues={99,100};
  Integer[] integerValues={99,100};
  Method method=testObject.getClass().getMethod("String_Node_Str",String.class);
  method.invoke(testObject,value);
  Method getString=stringGetter.getMethod("String_Node_Str");
  Assert.assertEquals(value,getString.invoke(testObject));
  Method setIntValue=testObject.getClass().getMethod("String_Node_Str",int.class);
  setIntValue.invoke(testObject,intValue);
  Method getInt=intGetter.getMethod("String_Node_Str");
  Assert.assertEquals(intValue,getInt.invoke(testObject));
  Method setIntValues=testObject.getClass().getMethod("String_Node_Str",int[].class);
  setIntValues.invoke(testObject,intValues);
  Method getIntValues=intsGetter.getMethod("String_Node_Str");
  Assert.assertEquals(intValues,getIntValues.invoke(testObject));
  Method setIntegerValues=testObject.getClass().getMethod("String_Node_Str",Integer[].class);
  Object[] wrappedIntegerValues=new Object[]{integerValues};
  setIntegerValues.invoke(testObject,wrappedIntegerValues);
  Method getIntegerValues=integersGetter.getMethod("String_Node_Str");
  Assert.assertEquals(integerValues,getIntegerValues.invoke(testObject));
}