[Demonstration 1]

[Buggy Method]
@Test
public void testDecodeHeader() {
    byte[] input = { 0x01, 0x00, 0x00, 0x10, (byte) 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 };
    DiameterHeader header = new DiameterHeader(input);
    assertEquals(0x01, header.getVersion());
    assertEquals(16, header.getMessageLength());
    assertTrue(header.isMandatory());
    assertTrue(header.isProxiable());
    assertTrue(header.isError());
    assertTrue(header.isRetransmitted());
    assertEquals(0, header.getCommandCode());
    assertEquals(0, header.getHopByHopId());
    assertEquals(0, header.getEndToEndId());
}

[Buggy Hunk]
assertTrue(header.isMandatory());

[Patch]
assertTrue(header.isRequest());

[Demonstration 2]

[Buggy Method]
public static Result fetch(String fromDate, String toDate, String projectName, boolean ignoreNeutrals) {
    MongoCursor<twitter4j.Status> tweets = Tweet.findByDate(fromDate, toDate, projectName);
    Logger.info("classifying " + tweets.count() + " tweets");
    ArrayList<ArrayList<ClassifiedStatus>> classifiedAll = classify(tweets, ignoreNeutrals);
    ArrayList<ClassifiedStatus> classifiedTweets = classifiedAll.get(0);
    ArrayList<ClassifiedStatus> classifiedReplies = classifiedAll.get(1);
    ObjectNode result = Json.newObject();
    ObjectNode interactions = result.putObject("interactions");
    for (ClassifiedStatus classifiedStatus : classifiedTweets) {
        twitter4j.Status thisStatus = classifiedStatus.getStatus();
        User thisUser = thisStatus.getUser();
        if (thisStatus.getRetweetedStatus() == null) {
            if (interactions.get(thisStatus.getId() + "") == null) {
                ObjectNode interaction = interactions.putObject(thisStatus.getId() + "");
                interaction.put("creator", thisUser.getName());
                interaction.put("popularity", thisUser.getFollowersCount());
                interaction.put("class", classifiedStatus.getClassOfstatus());
                interaction.put("message", thisStatus.getText());
                interaction.put("singleton", true);
                interaction.putArray("retweetedBy");
                interaction.putArray("replies");
            }
        }
        if (thisStatus.getRetweetedStatus() != null) {
            twitter4j.Status retweetedStatus = thisStatus.getRetweetedStatus();
            if (interactions.get(retweetedStatus + "") == null) {
                User originator = retweetedStatus.getUser();
                ObjectNode interaction = interactions.putObject(retweetedStatus.getId() + "");
                interaction.put("creator", originator.getName());
                interaction.put("popularity", originator.getFollowersCount());
                interaction.put("message", retweetedStatus.getText());
                //using the same class of the retweet (right ?)
                interaction.put("class", classifiedStatus.getClassOfstatus());
                interaction.put("singleton", false);
                interaction.putArray("replies");
                interaction.putArray("retweetedBy").addObject().put("name", thisUser.getName()).put("popularity", thisUser.getFollowersCount());
            } else {
                ObjectNode originalTweet = (ObjectNode) interactions.get(retweetedStatus.getId() + "");
                ArrayNode edges = (ArrayNode) originalTweet.get("retweetedBy");
                originalTweet.put("singleton", false);
                edges.addObject().put("name", thisUser.getName()).put("popularity", thisUser.getFollowersCount());
            }
        }
    }
    TwitterCollector collector = null;
    for (ClassifiedStatus classifiedStatus : classifiedReplies) {
        twitter4j.Status thisStatus = classifiedStatus.getStatus();
        User thisUser = thisStatus.getUser();
        if (thisStatus.getInReplyToStatusId() != -1) {
            long originalStatusId = thisStatus.getInReplyToStatusId();
            ObjectNode reply;
            System.out.println(originalStatusId);
            if (interactions.get(originalStatusId + "") != null) {
                ObjectNode originalTweet = (ObjectNode) interactions.get(originalStatusId + "");
                ArrayNode replies = (ArrayNode) originalTweet.get("replies");
                originalTweet.put("singleton", false);
                reply = replies.addObject();
            } else {
                twitter4j.Status originalStatus = (collector == null) ? new TwitterCollector().getStatus(originalStatusId) : collector.getStatus(originalStatusId);
                if (originalStatus == null) {
                    continue;
                } else {
                    ObjectNode interaction = interactions.putObject(originalStatus.getId() + "");
                    interaction.put("creator", originalStatus.getUser().getName());
                    interaction.put("popularity", originalStatus.getUser().getFollowersCount());
                    interaction.put("class", "neutral");
                    interaction.put("message", originalStatus.getText());
                    interaction.putArray("retweetedBy");
                    interaction.put("singleton", false);
                    reply = interaction.putArray("replies").addObject();
                }
            }
            reply.put("id", thisStatus.getId() + "");
            reply.put("creator", thisUser.getName());
            reply.put("popularity", thisUser.getFollowersCount());
            reply.put("class", classifiedStatus.getClassOfstatus());
            reply.put("message", thisStatus.getText());
            reply.put("singleton", false);
            reply.putArray("retweetedBy");
            reply.putArray("replies");
        }
    }
    int total = classifiedTweets.size() + classifiedReplies.size();
    result.put("message", "Successfully fetched " + total + " tweets");
    response().setContentType("application/json");
    return ok(result);
}

[Buggy Hunk]
if(interactions.get(retweetedStatus+"") == null)

[Patch]
if(interactions.get(retweetedStatus.getId()+"") == null)

[Demonstration 3]

[Buggy Method]
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mBtnCamera = (Button) findViewById(R.id.btnCamera);
    mBtnChooseFromGallery = (Button) findViewById(R.id.btnChoose);
    mBtnNoPicture = (Button) findViewById(R.id.btnNoPicture);
    reportList = (ListView) findViewById(R.id.report_list);
    // TODO: display list od current user's reports
    // set custom toolbar
    mToolbar = (Toolbar) findViewById(R.id.toolBar);
    setSupportActionBar(mToolbar);
    mBtnCamera.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            launchCameraIntent();
        }
    });
    mBtnChooseFromGallery.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            launchGalleryIntent();
        }
    });
    mBtnNoPicture.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MainActivity.this, NoPictureActivity.class);
            startActivity(intent);
            //FirebaseAuth.getInstance().signOut();
            //startActivity(new Intent(MainActivity.this, LoginActivity.class));
        }
    });
    // nav drawer functionality
    final DrawerLayout drawer = (DrawerLayout) findViewById(R.id.navigation_drawer_layout);
    final ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, drawer, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {

        @Override
        public void onDrawerOpened(View drawerView) {
            //hideKeyBoard();
            getCurrentFocus().clearFocus();
            super.onDrawerOpened(drawerView);
        }
    };
    drawer.setDrawerListener(drawerToggle);
    drawerToggle.syncState();
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    //TODO: check permissions for going into gallery
    checkPermissions();
    ActivityCompat.requestPermissions(MainActivity.this, new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, 123);
}

[Buggy Hunk]
reportList = (ListView) findViewById(R.id.report_list);

[Patch]
reportList = (RecyclerView) findViewById(R.id.report_list);