Program: 43607
Project: 43607
Buggy source:
@Override ArrayList<Prediction> classify(int gestureType,float[] vector){
  ArrayList<Prediction> predictions=new ArrayList<Prediction>();
  ArrayList<Instance> instances=getInstances();
  int count=instances.size();
  TreeMap<String,Double> label2score=new TreeMap<String,Double>();
  for (int i=0; i < count; i++) {
    Instance sample=instances.get(i);
    if (sample.vector.length != vector.length) {
      continue;
    }
    double distance;
    if (gestureType == GestureLibrary.SEQUENCE_SENSITIVE) {
      distance=GestureUtilities.cosineDistance(sample.vector,vector);
    }
 else {
      distance=GestureUtilities.squaredEuclideanDistance(sample.vector,vector);
    }
    double weight;
    if (distance == 0) {
      weight=Double.MAX_VALUE;
    }
 else {
      weight=1 / distance;
    }
    Double score=label2score.get(sample.label);
    if (score == null || weight > score) {
      label2score.put(sample.label,weight);
    }
  }
  double sum=0;
  for (  String name : label2score.keySet()) {
    double score=label2score.get(name);
    sum+=score;
    predictions.add(new Prediction(name,score));
  }
  for (  Prediction prediction : predictions) {
    prediction.score/=sum;
  }
  Collections.sort(predictions,new Comparator<Prediction>(){
    public int compare(    Prediction object1,    Prediction object2){
      double score1=object1.score;
      double score2=object2.score;
      if (score1 > score2) {
        return -1;
      }
 else       if (score1 < score2) {
        return 1;
      }
 else {
        return 0;
      }
    }
  }
);
  return predictions;
}

Fixed version (ground truth):
@Override ArrayList<Prediction> classify(int sequenceType,float[] vector){
  ArrayList<Prediction> predictions=new ArrayList<Prediction>();
  ArrayList<Instance> instances=getInstances();
  int count=instances.size();
  TreeMap<String,Double> label2score=new TreeMap<String,Double>();
  for (int i=0; i < count; i++) {
    Instance sample=instances.get(i);
    if (sample.vector.length != vector.length) {
      continue;
    }
    double distance;
    if (sequenceType == GestureLibrary.SEQUENCE_SENSITIVE) {
      distance=GestureUtilities.cosineDistance(sample.vector,vector);
    }
 else {
      distance=GestureUtilities.squaredEuclideanDistance(sample.vector,vector);
    }
    double weight;
    if (distance == 0) {
      weight=Double.MAX_VALUE;
    }
 else {
      weight=1 / distance;
    }
    Double score=label2score.get(sample.label);
    if (score == null || weight > score) {
      label2score.put(sample.label,weight);
    }
  }
  double sum=0;
  for (  String name : label2score.keySet()) {
    double score=label2score.get(name);
    sum+=score;
    predictions.add(new Prediction(name,score));
  }
  for (  Prediction prediction : predictions) {
    prediction.score/=sum;
  }
  Collections.sort(predictions,new Comparator<Prediction>(){
    public int compare(    Prediction object1,    Prediction object2){
      double score1=object1.score;
      double score2=object2.score;
      if (score1 > score2) {
        return -1;
      }
 else       if (score1 < score2) {
        return 1;
      }
 else {
        return 0;
      }
    }
  }
);
  return predictions;
}