Program: 9772
Project: 9772
Buggy source:
private void computeM(NamedClass nc){
  long mComputationTimeStartNs=System.nanoTime();
  mA.put(nc,new TreeMap<Integer,SortedSet<Description>>());
  for (int i=1; i <= mMaxLength; i++) {
    mA.get(nc).put(i,new TreeSet<Description>(conceptComparator));
  }
  SortedSet<Description> m1=subHierarchy.getSubClasses(nc);
  mA.get(nc).put(1,m1);
  SortedSet<Description> m2=new TreeSet<Description>(conceptComparator);
  if (useNegation) {
    SortedSet<Description> m2tmp=subHierarchy.getSuperClasses(new Nothing());
    for (    Description c : m2tmp) {
      if (!(c instanceof Thing)) {
        NamedClass a=(NamedClass)c;
        if (!isNotADisjoint(a,nc) && isNotAMeaningful(a,nc))         m2.add(new Negation(a));
      }
    }
  }
  computeMg(nc);
  if (useBooleanDatatypes) {
    Set<DatatypeProperty> booleanDPs=mgbd.get(nc);
    for (    DatatypeProperty dp : booleanDPs) {
      m2.add(new BooleanValueRestriction(dp,true));
      m2.add(new BooleanValueRestriction(dp,false));
    }
  }
  mA.get(nc).put(2,m2);
  SortedSet<Description> m3=new TreeSet<Description>(conceptComparator);
  if (useExistsConstructor) {
    for (    ObjectProperty r : mgr.get(nc)) {
      m3.add(new ObjectSomeRestriction(r,new Thing()));
    }
  }
  if (useAllConstructor) {
    for (    ObjectProperty r : mgr.get(nc)) {
      m3.add(new ObjectAllRestriction(r,new Thing()));
    }
  }
  if (useDoubleDatatypes) {
    Set<DatatypeProperty> doubleDPs=mgdd.get(nc);
    for (    DatatypeProperty dp : doubleDPs) {
      if (splits.get(dp).size() > 0) {
        DoubleMaxValue max=new DoubleMaxValue(splits.get(dp).get(splits.get(dp).size() - 1));
        DoubleMinValue min=new DoubleMinValue(splits.get(dp).get(0));
        m3.add(new DatatypeSomeRestriction(dp,max));
        m3.add(new DatatypeSomeRestriction(dp,min));
      }
    }
  }
  if (useDataHasValueConstructor) {
    Set<DatatypeProperty> stringDPs=mgsd.get(nc);
    for (    DatatypeProperty dp : stringDPs) {
      Set<Constant> freqValues=frequentDataValues.get(dp);
      for (      Constant c : freqValues) {
        m3.add(new StringValueRestriction(dp,c.getLiteral()));
      }
    }
  }
  mA.get(nc).put(3,m3);
  SortedSet<Description> m4=new TreeSet<Description>(conceptComparator);
  if (useCardinalityRestrictions) {
    for (    ObjectProperty r : mgr.get(nc)) {
      int maxFillers=maxNrOfFillers.get(r);
      if (maxFillers > 0)       m4.add(new ObjectMaxCardinalityRestriction(maxFillers - 1,r,new Thing()));
    }
  }
  mA.get(nc).put(4,m4);
  mComputationTimeNs+=System.nanoTime() - mComputationTimeStartNs;
}

Fixed version (ground truth):
private void computeM(NamedClass nc){
  long mComputationTimeStartNs=System.nanoTime();
  mA.put(nc,new TreeMap<Integer,SortedSet<Description>>());
  for (int i=1; i <= mMaxLength; i++) {
    mA.get(nc).put(i,new TreeSet<Description>(conceptComparator));
  }
  SortedSet<Description> m1=getClassCandidates(nc);
  mA.get(nc).put(1,m1);
  SortedSet<Description> m2=getNegClassCandidates(nc);
  mA.get(nc).put(2,m2);
  computeMg(nc);
  if (useBooleanDatatypes) {
    Set<DatatypeProperty> booleanDPs=mgbd.get(nc);
    for (    DatatypeProperty dp : booleanDPs) {
      m2.add(new BooleanValueRestriction(dp,true));
      m2.add(new BooleanValueRestriction(dp,false));
    }
  }
  mA.get(nc).put(2,m2);
  SortedSet<Description> m3=new TreeSet<Description>(conceptComparator);
  if (useExistsConstructor) {
    for (    ObjectProperty r : mgr.get(nc)) {
      m3.add(new ObjectSomeRestriction(r,new Thing()));
    }
  }
  if (useAllConstructor) {
    for (    ObjectProperty r : mgr.get(nc)) {
      m3.add(new ObjectAllRestriction(r,new Thing()));
    }
  }
  if (useDoubleDatatypes) {
    Set<DatatypeProperty> doubleDPs=mgdd.get(nc);
    for (    DatatypeProperty dp : doubleDPs) {
      if (splits.get(dp).size() > 0) {
        DoubleMaxValue max=new DoubleMaxValue(splits.get(dp).get(splits.get(dp).size() - 1));
        DoubleMinValue min=new DoubleMinValue(splits.get(dp).get(0));
        m3.add(new DatatypeSomeRestriction(dp,max));
        m3.add(new DatatypeSomeRestriction(dp,min));
      }
    }
  }
  if (useDataHasValueConstructor) {
    Set<DatatypeProperty> stringDPs=mgsd.get(nc);
    for (    DatatypeProperty dp : stringDPs) {
      Set<Constant> freqValues=frequentDataValues.get(dp);
      for (      Constant c : freqValues) {
        m3.add(new StringValueRestriction(dp,c.getLiteral()));
      }
    }
  }
  mA.get(nc).put(3,m3);
  SortedSet<Description> m4=new TreeSet<Description>(conceptComparator);
  if (useCardinalityRestrictions) {
    for (    ObjectProperty r : mgr.get(nc)) {
      int maxFillers=maxNrOfFillers.get(r);
      if (maxFillers > 0)       m4.add(new ObjectMaxCardinalityRestriction(maxFillers - 1,r,new Thing()));
    }
  }
  mA.get(nc).put(4,m4);
  mComputationTimeNs+=System.nanoTime() - mComputationTimeStartNs;
}