[Demonstration 1]

[Buggy Method]
@Override
public boolean play(final FileHandle file) throws FileNotFoundException {
    if (!file.exists()) {
        throw new FileNotFoundException("Could not find file: " + file.path());
    }
    //Wait for the player to be created. (If the Looper thread is busy,
    if (player == null) {
        synchronized (lock) {
            while (player == null) {
                try {
                    lock.wait();
                } catch (InterruptedException e) {
                    return false;
                }
            }
        }
    }
    player.reset();
    done = false;
    player.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {
            float x = -mp.getVideoWidth() / 2;
            float y = -mp.getVideoHeight() / 2;
            float width = mp.getVideoWidth();
            float height = mp.getVideoHeight();
            //@formatter:off
            mesh.setVertices(new float[] { x, y, 0, 0, 1, x + width, y, 0, 1, 1, x + width, y + height, 0, 1, 0, x, y + height, 0, 0, 0 });
            //@formatter:on
            // set viewport world dimensions according to video dimensions and viewport type
            viewport.setWorldSize(width, height);
            Gdx.app.postRunnable(new Runnable() {

                @Override
                public void run() {
                    // force viewport update to let scaling take effect
                    viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
                }
            });
            prepared = true;
            if (sizeListener != null) {
                sizeListener.onVideoSize(width, height);
            }
            mp.start();
        }
    });
    player.setOnErrorListener(new OnErrorListener() {

        @Override
        public boolean onError(MediaPlayer mp, int what, int extra) {
            done = true;
            Log.e("VideoPlayer", String.format("Error occured: %d, %d\n", what, extra));
            return false;
        }
    });
    player.setOnCompletionListener(new OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) {
            done = true;
            if (completionListener != null) {
                completionListener.onCompletionListener(file);
            }
        }
    });
    try {
        if (file.type() == FileType.Classpath || (file.type() == FileType.Internal && !file.file().exists())) {
            AssetManager assets = ((AndroidApplication) Gdx.app).getAssets();
            AssetFileDescriptor descriptor = assets.openFd(file.name());
            player.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
        } else {
            player.setDataSource(file.file().getAbsolutePath());
        }
        player.setSurface(new Surface(videoTexture));
        player.prepareAsync();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return true;
}

[Buggy Hunk]
AssetFileDescriptor descriptor = assets.openFd(file.name());

[Patch]
AssetFileDescriptor descriptor = assets.openFd(file.path());

[Demonstration 2]

[Buggy Method]
private void initServer() throws ConfigurationException {
    if (port == 0) {
        throw new ConfigurationException("Port value not set");
    }
    newChannel();
    if (channel == null) {
        throw new ConfigurationException("ISO Channel is null");
    }
    if (!(channel instanceof ServerChannel)) {
        throw new ConfigurationException(channelString + "does not implement ServerChannel");
    }
    ThreadPool pool = null;
    pool = new ThreadPool(minSessions, maxSessions);
    pool.setLogger(log.getLogger(), getName() + ".pool");
    server = new ISOServer(port, (ServerChannel) channel, pool);
    server.setLogger(log.getLogger(), getName() + ".server");
    server.setName(getName());
    if (socketFactoryString != null) {
        ISOServerSocketFactory sFac = (ISOServerSocketFactory) getFactory().newInstance(socketFactoryString);
        if (sFac != null && sFac instanceof LogSource) {
            ((LogSource) sFac).setLogger(log.getLogger(), getName() + ".socket-factory");
        }
        server.setSocketFactory(sFac);
    }
    getFactory().setConfiguration(server, getPersist());
    addServerSocketFactory();
    // ISORequestListener
    addListeners();
    addISOServerConnectionListeners();
    NameRegistrar.register(getName(), this);
    new Thread(server).start();
}

[Buggy Hunk]
pool = new ThreadPool (minSessions ,maxSessions);

[Patch]
pool = new ThreadPool (minSessions ,maxSessions, getName() + "-ThreadPool");

[Demonstration 3]

[Buggy Method]
@Override
public void onCompletion(MediaPlayer mp) {
    setState(State.PAUSED);
    if (getControls() != null) {
        getControls().setPlaying(false);
    }
}

[Buggy Hunk]
public void onCompletion(MediaPlayer mp) {

[Patch]
public synchronized void onCompletion(MediaPlayer mp) {