[Demonstration 1]

[Buggy Method]
@Test
@SuppressWarnings("unchecked")
public void whenExtractMultipleParametersThenTheParsedParametersAreReturned() throws Exception {
    when(parameterParser.parse(ANY_TYPE, aParameter())).thenReturn(SPECIFIC_VALUE, ANOTHER_SPECIFIC_VALUE);
    assertThat(parametersExtractor.extract(asList(aParameter(), aParameter()), array(ANY_TYPE, ANY_TYPE)), aslist(containsOnly(sameInstance(SPECIFIC_VALUE), sameInstance(ANOTHER_SPECIFIC_VALUE))));
}

[Buggy Hunk]
aslist(containsOnly(sameInstance(SPECIFIC_VALUE), sameInstance(ANOTHER_SPECIFIC_VALUE))));

[Patch]
asList(containsOnly(sameInstance(SPECIFIC_VALUE), sameInstance(ANOTHER_SPECIFIC_VALUE))));

[Demonstration 2]

[Buggy Method]
@VisibleForTesting
protected CloseableHttpClient createClient(final org.apache.http.impl.client.HttpClientBuilder builder, final InstrumentedHttpClientConnectionManager manager, final String name) {
    final Integer timeout = (int) configuration.getTimeout().toMilliseconds();
    final long keepAlive = configuration.getKeepAlive().toMilliseconds();
    final ConnectionReuseStrategy reuseStrategy = keepAlive == 0 ? new NoConnectionReuseStrategy() : new DefaultConnectionReuseStrategy();
    final HttpRequestRetryHandler retryHandler = configuration.getRetries() == 0 ? NO_RETRIES : (httpRequestRetryHandler == null ? new DefaultHttpRequestRetryHandler(configuration.getRetries(), false) : httpRequestRetryHandler);
    final RequestConfig requestConfig = createRequestConfig();
    final SocketConfig socketConfig = SocketConfig.custom().setTcpNoDelay(true).setSoTimeout(timeout).build();
    builder.setRequestExecutor(new InstrumentedHttpRequestExecutor(metricRegistry, metricNameStrategy)).setConnectionManager(manager).setDefaultRequestConfig(requestConfig).setDefaultSocketConfig(socketConfig).setConnectionReuseStrategy(reuseStrategy).setRetryHandler(retryHandler).setUserAgent(createUserAgent(name));
    if (keepAlive != 0) {
        // either keep alive based on response header Keep-Alive,
        // or if the server can keep a persistent connection (-1), then override based on client's configuration
        builder.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy() {

            @Override
            public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
                final long duration = super.getKeepAliveDuration(response, context);
                return (duration == -1) ? keepAlive : duration;
            }
        });
    }
    if (credentialsProvider != null) {
        builder.setDefaultCredentialsProvider(credentialsProvider);
    }
    if (routePlanner != null) {
        builder.setRoutePlanner(routePlanner);
    }
    return builder.build();
}

[Buggy Hunk]
builder.setRequestExecutor(new InstrumentedHttpRequestExecutor(metricRegistry, metricNameStrategy))

[Patch]
builder.setRequestExecutor(new InstrumentedHttpRequestExecutor(metricRegistry, metricNameStrategy, name))

[Demonstration 3]

[Buggy Method]
private StoredMessage<MessageMetaData_0_10> convertToStoredMessage(final Message_1_0 serverMsg, final NamedAddressSpace addressSpace) {
    Object bodyObject = MessageConverter_from_1_0.convertBodyToObject(serverMsg);
    final ObjectToMimeContentConverter converter = MimeContentConverterRegistry.getBestFitObjectToMimeContentConverter(bodyObject);
    final byte[] messageContent = converter == null ? new byte[] {} : converter.toMimeContent(bodyObject);
    final String mimeType = converter == null ? null : converter.getMimeType();
    final MessageMetaData_0_10 messageMetaData_0_10 = convertMetaData(serverMsg, addressSpace, mimeType, messageContent.length);
    final int metadataSize = messageMetaData_0_10.getStorableSize();
    return new StoredMessage<MessageMetaData_0_10>() {

        @Override
        public MessageMetaData_0_10 getMetaData() {
            return messageMetaData_0_10;
        }

        @Override
        public long getMessageNumber() {
            return serverMsg.getMessageNumber();
        }

        @Override
        public Collection<QpidByteBuffer> getContent(final int offset, final int length) {
            return Collections.singleton(QpidByteBuffer.wrap(messageContent, offset, length));
        }

        @Override
        public int getContentSize() {
            return messageContent.length;
        }

        @Override
        public int getMetadataSize() {
            return metadataSize;
        }

        @Override
        public void remove() {
            throw new UnsupportedOperationException();
        }

        @Override
        public boolean isInMemory() {
            return true;
        }

        @Override
        public boolean flowToDisk() {
            return false;
        }

        @Override
        public void reallocate() {
        }
    };
}

[Buggy Hunk]
Object bodyObject = MessageConverter_from_1_0.convertBodyToObject(serverMsg);

[Patch]
Object bodyObject = convertBodyToObject(serverMsg);