[Demonstration 1]

[Buggy Method]
@Test
public void testFitStoichiometry() {
    int[] uc, comp;
    boolean result;
    int[][] assemblies = new int[][] { new int[] { 2, 1, 1 }, new int[] { 1, 2, 0 }, new int[] { 0, 0, 1 }, new int[] { 1, 1, 1 } };
    uc = new int[] { 2, 1, 1 };
    comp = new int[assemblies.length];
    result = FullCoverageMapper.fitStoichiometry(uc, assemblies, comp);
    assertTrue(result);
    assertArrayEquals(new int[] { 2, 1, 1 }, uc);
    assertArrayEquals(new int[] { 1, 0, 0, 0 }, comp);
    uc = new int[] { 0, 0, 4 };
    comp = new int[assemblies.length];
    result = FullCoverageMapper.fitStoichiometry(uc, assemblies, comp);
    assertTrue(result);
    assertArrayEquals(new int[] { 0, 0, 4 }, uc);
    assertArrayEquals(new int[] { 0, 0, 4, 0 }, comp);
    uc = new int[] { 4, 4, 4 };
    comp = new int[assemblies.length];
    result = FullCoverageMapper.fitStoichiometry(uc, assemblies, comp);
    assertTrue(result);
    assertArrayEquals(new int[] { 4, 4, 4 }, uc);
    assertArrayEquals(new int[] { 1, 1, 2, 1 }, comp);
    uc = new int[] { 4, 2, 1 };
    comp = new int[assemblies.length];
    result = FullCoverageMapper.fitStoichiometry(uc, assemblies, comp);
    assertFalse(result);
    assertArrayEquals(new int[] { 4, 2, 1 }, uc);
    assertArrayEquals(new int[] { 0, 0, 0, 0 }, comp);
    uc = new int[] { 0, 0, 0 };
    comp = new int[assemblies.length];
    result = FullCoverageMapper.fitStoichiometry(uc, assemblies, comp);
    assertTrue(result);
    assertArrayEquals(new int[] { 0, 0, 0 }, uc);
    assertArrayEquals(new int[] { 0, 0, 0, 0 }, comp);
    uc = new int[] { 0, 0, -1 };
    comp = new int[assemblies.length];
    result = FullCoverageMapper.fitStoichiometry(uc, assemblies, comp);
    assertFalse(result);
    assertArrayEquals(new int[] { 0, 0, -1 }, uc);
    assertArrayEquals(new int[] { 0, 0, 0, 0 }, comp);
}

[Buggy Hunk]
public void testFitStoichiometry() {

[Patch]
public void testFitStoichiometry() throws InterruptedByTimeoutException {

[Demonstration 2]

[Buggy Method]
private void copy(HTSummary task, Task master_task) {
    Map<String, Object> content = getMappedData(master_task);
    Document doc = getDocument(content);
    assert doc != null;
    task.setCreated(master_task.getTaskData().getCreatedOn());
    task.setCaseNo(doc.getCaseNo());
    if (task.getCaseNo() == null) {
        Object subject = doc.get("subject");
        if (subject != null) {
            task.setCaseNo(subject.toString());
        }
    }
    task.setDescription(doc.getDescription());
    task.setPriority(doc.getPriority());
    task.setDocumentRef(doc.getId());
    task.setRefId(doc.getRefId());
    task.setCompletedOn(master_task.getTaskData().getCompletedOn());
    String processId = master_task.getTaskData().getProcessId();
    task.setProcessId(processId);
    task.setProcessInstanceId(master_task.getTaskData().getProcessInstanceId());
    task.setHasAttachment(DB.getAttachmentDao().getHasAttachment(doc.getId()));
    try {
        WorkflowProcessImpl process = (WorkflowProcessImpl) sessionManager.getProcess(processId);
        task.setProcessName(process.getName());
        Node node = getNode(master_task);
        task.setNodeId(node.getId());
        task.setNodeName(node.getName());
    } catch (Exception e) {
    }
    task.setHasAttachment(DB.getAttachmentDao().getHasAttachment(doc.getId()));
    Status status = master_task.getTaskData().getStatus();
    task.setStatus(HTStatus.valueOf(status.name().toUpperCase()));
    if (status == Status.Completed) {
        loadProgressInfo(task, master_task.getTaskData().getProcessInstanceId());
    } else {
        TaskDelegation taskdelegation = DB.getDocumentDao().getTaskDelegationByTaskId(master_task.getId());
        if (taskdelegation != null) {
            Delegate delegate = new Delegate(taskdelegation.getId(), taskdelegation.getTaskId(), taskdelegation.getUserId(), taskdelegation.getDelegateTo());
            task.setDelegate(delegate);
        }
        User user = null;
        if ((user = master_task.getTaskData().getActualOwner()) != null) {
            task.setTaskActualOwner(getUser(user.getId()));
        } else {
            task.setPotentialOwners(getPotentialOwners(master_task));
        }
    }
    List<I18NText> names = master_task.getNames();
    if (names.size() > 0) {
        task.setTaskName(names.get(0).getText());
    }
    Deadlines deadlines = master_task.getDeadlines();
    if (deadlines != null) {
        List<Deadline> startDeadlines = deadlines.getStartDeadlines();
        if (startDeadlines != null)
            if (startDeadlines.size() > 0) {
                Deadline deadline = startDeadlines.get(startDeadlines.size() - 1);
                Date date = deadline.getDate();
                task.setStartDateDue(date);
            }
        List<Deadline> endDeadlines = deadlines.getEndDeadlines();
        if (endDeadlines != null)
            if (endDeadlines.size() > 0) {
                Deadline deadline = endDeadlines.get(endDeadlines.size() - 1);
                Date date = deadline.getDate();
                task.setEndDateDue(date);
            }
    }
    try {
        // Exception thrown if process not started
        task.setName(getDisplayName(master_task));
    } catch (Exception e) {
    }
    if (doc.getRefId() != null) {
        Document model = null;
        model = DB.getDocumentDao().getDocJson(doc.getRefId());
        task.setDocStatus(model == null ? null : model.getStatus());
        task.setOwner(model.getOwner());
        task.setCurrentTaskName(model.getCurrentTaskName());
        task.setCurrentTaskId(model.getCurrentTaskId());
    }
    if (task instanceof HTask) {
        task.setDetails(doc.getDetails());
        task.setValues(doc.getValues());
        task.setPriority(doc.getPriority());
        task.setDocumentDate(doc.getDocumentDate());
        // TaskDelegation taskdelegation =
        // DB.getDocumentDao().getTaskDelegationByTaskId(master_task.getId());
        //
        // if(taskdelegation!=null){
        // Delegate delegate = new Delegate(taskdelegation.getId(),
        // taskdelegation.getTaskId(), taskdelegation.getUserId(),
        // taskdelegation.getDelegateTo());
        // ((HTask)task).setDelegate(delegate);
        // }
    }
}

[Buggy Hunk]
task.setValues(doc.getValues());

[Patch]
task.setValues(doc.getValues()==null? new HashMap<String, Value>() : doc.getValues());

[Demonstration 3]

[Buggy Method]
public void changeToDrawerMenu() {
    this.drawerToggle.setDrawerIndicatorEnabled(true);
    this.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}

[Buggy Hunk]
this.drawerToggle.setDrawerIndicatorEnabled(true);

[Patch]
createMenu();