[Demonstration 1]

[Buggy Method]
public void run() {
    DataReader reader = getReader();
    System.out.println("Loading training data...");
    ExtractedFeatures[] features = reader.readFeatures(getTrainingSetPath());
    if (features.length == 0) {
        System.err.println("Reader " + reader + " returned 0 ExtractedFeatures");
        return;
    }
    int targetType = features[0].getKeyTypes()[getTargetFeature()];
    Classifier classifier;
    if (targetType == ExtractedFeatures.FLOAT_KEY) {
        classifier = new FloatClassifier();
        classifier.activationFunction = LinearModel.ActivationFunction.LOGISTIC;
    } else if (targetType == ExtractedFeatures.INT_KEY) {
        classifier = new IntClassifier();
        classifier.activationFunction = LinearModel.ActivationFunction.IDENTITY;
    } else if (targetType == ExtractedFeatures.ARRAY_KEY) {
        // We could support this, but the only use case I can think of is predicting word vectors, and that
        // seems like a task for the future
        throw new IllegalStateException("MinimalML doesn't support predicting arrays at the moment. If you have a " + "need, it should be easy enough to write another Classifier, and include that in your Experiment.");
    } else {
        System.err.println("Target feature " + getTargetFeature() + " is NONE_TYPE");
        return;
    }
    classifier.trainer = getTrainer();
    classifier.kernel = getKernel();
    classifier.optimizer = getOptimizer();
    classifier.targetFeature = getTargetFeature();
    classifier.train(features);
    ExtractedFeatures[] testFeatures = reader.readFeatures(getTestSetPath());
    try {
        Analyzer.writeReport(testFeatures, getTargetFeature(), classifier, reader, getReportPath());
    } catch (IOException e) {
        System.err.println("Failed to write report");
        e.printStackTrace();
    }
    System.out.println("Done");
}

[Buggy Hunk]
classifier.activationFunction = LinearModel.ActivationFunction.IDENTITY;

[Patch]
classifier.activationFunction = LinearModel.ActivationFunction.LOGISTIC;

[Demonstration 2]

[Buggy Method]
private static String getProjectBaseDirectory() {
    String path = Paths.get("").toAbsolutePath().normalize().toString();
    path = path.substring(0, path.lastIndexOf(PROJECT_SUBMODULE_NAME));
    return path + File.separator;
}

[Buggy Hunk]
return path + File.separator;

[Patch]
return path + PROJECT_SUBMODULE_NAME + File.separator;

[Demonstration 3]

[Buggy Method]
public void insertTransaksijualobat(String idTransaksijual, String dateTransaksijual, String keterangan) throws RemoteException {
    Transaksijualobat transaksijual = new Transaksijualobat();
    transaksijual.setIdTransaksijual(idTransaksijual);
    transaksijual.setDateTransaksijual(dateTransaksijual);
    transaksijual.setKeterangan(keterangan);
    transaksijualobat.insertTransaksijualbat(transaksijual);
}

[Buggy Hunk]
transaksijualobat.insertTransaksijualbat(transaksijual);

[Patch]
transaksijualobat.insertTransaksijualobat(transaksijual);