Program: 43006
Project: 43006
Buggy source:
@Test public void testExternalizableWithFollowingObjects() throws Throwable {
  final TestExternalizableWithSerializableFields ext1=new TestExternalizableWithSerializableFields();
  final TestExternalizableWithSerializableFields ext2=new TestExternalizableWithSerializableFields();
  final TestExternalizableWithSerializableFields ext3=new TestExternalizableWithSerializableFields();
  final AtomicInteger version=new AtomicInteger();
  runReadWriteTest(new ReadWriteTest(){
    public void configure(    final MarshallingConfiguration configuration) throws Throwable {
      version.set(configuration.getVersion());
    }
    public void runWrite(    final Marshaller marshaller) throws Throwable {
      if (marshaller instanceof SerialMarshaller || marshaller instanceof ObjectOutputStreamMarshaller)       throw new SkipException("String_Node_Str");
      marshaller.writeObject(ext1);
      marshaller.writeObject(ext2);
      marshaller.writeObject(ext3);
    }
    public void runRead(    final Unmarshaller unmarshaller) throws Throwable {
      if ((unmarshaller instanceof RiverUnmarshaller) && version.get() < 1) {
        throw new SkipException("String_Node_Str");
      }
      if (unmarshaller instanceof ObjectInputStreamUnmarshaller) {
        throw new SkipException("String_Node_Str");
      }
      final TestExternalizableWithSerializableFields rext1=(TestExternalizableWithSerializableFields)unmarshaller.readObject();
      final TestExternalizableWithSerializableFields rext2=(TestExternalizableWithSerializableFields)unmarshaller.readObject();
      final TestExternalizableWithSerializableFields rext3=(TestExternalizableWithSerializableFields)unmarshaller.readObject();
      assertTrue("String_Node_Str",unmarshaller.read() == -1);
      assertTrue("String_Node_Str",rext1.ran);
      assertTrue("String_Node_Str",rext2.ran);
      assertTrue("String_Node_Str",rext3.ran);
    }
  }
);
  assertFalse("String_Node_Str",ext1.ran);
  assertFalse("String_Node_Str",ext2.ran);
  assertFalse("String_Node_Str",ext3.ran);
}

Fixed version (ground truth):
@Test public void testExternalizableWithFollowingObjects() throws Throwable {
  final TestExternalizableWithSerializableFields ext1=new TestExternalizableWithSerializableFields();
  final TestExternalizableWithSerializableFields ext2=new TestExternalizableWithSerializableFields();
  final TestExternalizableWithSerializableFields ext3=new TestExternalizableWithSerializableFields();
  final AtomicInteger version=new AtomicInteger();
  runReadWriteTest(new ReadWriteTest(){
    public void configure(    final MarshallingConfiguration configuration) throws Throwable {
      version.set(configuration.getVersion());
    }
    public void runWrite(    final Marshaller marshaller) throws Throwable {
      marshaller.writeObject(ext1);
      marshaller.writeObject(ext2);
      marshaller.writeObject(ext3);
    }
    public void runRead(    final Unmarshaller unmarshaller) throws Throwable {
      if ((unmarshaller instanceof RiverUnmarshaller) && version.get() < 1) {
        throw new SkipException("String_Node_Str");
      }
      final TestExternalizableWithSerializableFields rext1=(TestExternalizableWithSerializableFields)unmarshaller.readObject();
      final TestExternalizableWithSerializableFields rext2=(TestExternalizableWithSerializableFields)unmarshaller.readObject();
      final TestExternalizableWithSerializableFields rext3=(TestExternalizableWithSerializableFields)unmarshaller.readObject();
      assertTrue("String_Node_Str",unmarshaller.read() == -1);
      assertTrue("String_Node_Str",rext1.ran);
      assertTrue("String_Node_Str",rext2.ran);
      assertTrue("String_Node_Str",rext3.ran);
    }
  }
);
  assertFalse("String_Node_Str",ext1.ran);
  assertFalse("String_Node_Str",ext2.ran);
  assertFalse("String_Node_Str",ext3.ran);
}