[Demonstration 1]

[Buggy Method]
public static void assertSimpleTSOutput(TokenStream stream, String[] expected) throws IOException {
    stream.reset();
    CharTermAttribute termAttr = stream.getAttribute(CharTermAttribute.class);
    assertThat(termAttr, notNullValue());
    int i = 0;
    while (stream.incrementToken()) {
        assertThat(expected.length, greaterThan(i));
        assertThat("expected different term at index " + i, expected[i++], equalTo(termAttr.toString()));
    }
    assertThat("not all tokens produced", i, equalTo(expected.length));
}

[Buggy Hunk]
assertThat( "expected different term at index " + i, expected[i++], equalTo(termAttr.toString()));

[Patch]
assertThat("expected different term at index " + i, termAttr.toString(), equalTo(expected[i++]));

[Demonstration 2]

[Buggy Method]
@Test
public void assertNeverAtMatchingValue() {
    Flowable<Integer> oi = Flowable.fromIterable(Arrays.asList(1, 2));
    TestSubscriber<Integer> o = new TestSubscriber<>();
    oi.subscribe(o);
    thrown.expect(AssertionError.class);
    o.assertNever(2);
    o.assertValueCount(2);
    o.assertTerminated();
}

[Buggy Hunk]
TestSubscriber<Integer> o = new TestSubscriber<>();

[Patch]
TestSubscriber<Integer> o = new TestSubscriber<Integer>();

[Demonstration 3]

[Buggy Method]
protected void doTestMessageAccess(boolean reloadable, boolean fallbackToSystemLocale, boolean expectGermanFallback, boolean useCodeAsDefaultMessage, boolean alwaysUseMessageFormat) {
    StaticApplicationContext ac = new StaticApplicationContext();
    if (reloadable) {
        StaticApplicationContext parent = new StaticApplicationContext();
        parent.refresh();
        ac.setParent(parent);
    }
    MutablePropertyValues pvs = new MutablePropertyValues();
    String basepath = "org/springframework/context/support/";
    String[] basenames;
    if (reloadable) {
        basenames = new String[] { "classpath:" + basepath + "messages", "classpath:" + basepath + "more-messages" };
    } else {
        basenames = new String[] { basepath + "messages", basepath + "more-messages" };
    }
    pvs.add("basenames", basenames);
    if (!fallbackToSystemLocale) {
        pvs.add("fallbackToSystemLocale", Boolean.FALSE);
    }
    if (useCodeAsDefaultMessage) {
        pvs.add("useCodeAsDefaultMessage", Boolean.TRUE);
    }
    if (alwaysUseMessageFormat) {
        pvs.add("alwaysUseMessageFormat", Boolean.TRUE);
    }
    Class<?> clazz = reloadable ? (Class<?>) ReloadableResourceBundleMessageSource.class : ResourceBundleMessageSource.class;
    ac.registerSingleton("messageSource", clazz, pvs);
    ac.refresh();
    Locale.setDefault(expectGermanFallback ? Locale.GERMAN : Locale.CANADA);
    assertEquals("message1", ac.getMessage("code1", null, Locale.ENGLISH));
    assertEquals(fallbackToSystemLocale && expectGermanFallback ? "nachricht2" : "message2", ac.getMessage("code2", null, Locale.ENGLISH));
    assertEquals("nachricht2", ac.getMessage("code2", null, Locale.GERMAN));
    assertEquals("nochricht2", ac.getMessage("code2", null, new Locale("DE", "at")));
    assertEquals("noochricht2", ac.getMessage("code2", null, new Locale("DE", "at", "oo")));
    if (reloadable) {
        assertEquals("nachricht2xml", ac.getMessage("code2", null, Locale.GERMANY));
    }
    MessageSourceAccessor accessor = new MessageSourceAccessor(ac);
    LocaleContextHolder.setLocale(new Locale("DE", "at"));
    try {
        assertEquals("nochricht2", accessor.getMessage("code2"));
    } finally {
        LocaleContextHolder.setLocale(null);
    }
    assertEquals("message3", ac.getMessage("code3", null, Locale.ENGLISH));
    MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable("code3");
    assertEquals("message3", ac.getMessage(resolvable, Locale.ENGLISH));
    resolvable = new DefaultMessageSourceResolvable(new String[] { "code4", "code3" });
    assertEquals("message3", ac.getMessage(resolvable, Locale.ENGLISH));
    assertEquals("message3", ac.getMessage("code3", null, Locale.ENGLISH));
    resolvable = new DefaultMessageSourceResolvable(new String[] { "code4", "code3" });
    assertEquals("message3", ac.getMessage(resolvable, Locale.ENGLISH));
    Object[] args = new Object[] { "Hello", new DefaultMessageSourceResolvable(new String[] { "code1" }) };
    assertEquals("Hello, message1", ac.getMessage("hello", args, Locale.ENGLISH));
    // test default message without and with args
    assertEquals("default", ac.getMessage(null, null, "default", Locale.ENGLISH));
    assertEquals("default", ac.getMessage(null, args, "default", Locale.ENGLISH));
    assertEquals("{0}, default", ac.getMessage(null, null, "{0}, default", Locale.ENGLISH));
    assertEquals("Hello, default", ac.getMessage(null, args, "{0}, default", Locale.ENGLISH));
    // test resolvable with default message, without and with args
    resolvable = new DefaultMessageSourceResolvable(null, null, "default");
    assertEquals("default", ac.getMessage(resolvable, Locale.ENGLISH));
    resolvable = new DefaultMessageSourceResolvable(null, args, "default");
    assertEquals("default", ac.getMessage(resolvable, Locale.ENGLISH));
    resolvable = new DefaultMessageSourceResolvable(null, null, "{0}, default");
    assertEquals("{0}, default", ac.getMessage(resolvable, Locale.ENGLISH));
    resolvable = new DefaultMessageSourceResolvable(null, args, "{0}, default");
    assertEquals("Hello, default", ac.getMessage(resolvable, Locale.ENGLISH));
    // test message args
    assertEquals("Arg1, Arg2", ac.getMessage("hello", new Object[] { "Arg1", "Arg2" }, Locale.ENGLISH));
    assertEquals("{0}, {1}", ac.getMessage("hello", null, Locale.ENGLISH));
    if (alwaysUseMessageFormat) {
        assertEquals("I'm", ac.getMessage("escaped", null, Locale.ENGLISH));
    } else {
        assertEquals("I''m", ac.getMessage("escaped", null, Locale.ENGLISH));
    }
    assertEquals("I'm", ac.getMessage("escaped", new Object[] { "some arg" }, Locale.ENGLISH));
    try {
        assertEquals("code4", ac.getMessage("code4", null, Locale.GERMAN));
        if (!useCodeAsDefaultMessage) {
            fail("Should have thrown NoSuchMessageException");
        }
    } catch (NoSuchMessageException ex) {
        if (useCodeAsDefaultMessage) {
            fail("Should have returned code as default message");
        }
    }
}

[Buggy Hunk]
(Class<?>) ReloadableResourceBundleMessageSource.class : ResourceBundleMessageSource.class;

[Patch]
ReloadableResourceBundleMessageSource.class : ResourceBundleMessageSource.class;