Program: 108144
Project: 108144
Buggy source:
/** 
 * Semantics of method name: monotonicity of criteria + monotonicity of metric.
 * @param solutionSpace
 * @param checker
 * @param strategy
 * @return
 */
private static AbstractAlgorithm createPartialFull(final SolutionSpace solutionSpace,final NodeChecker checker,final FLASHStrategy strategy){
  PredictiveProperty binaryAnonymityProperty=solutionSpace.getPropertyKAnonymous();
  NodeAction binaryTriggerSkip=new NodeAction(){
    @Override public boolean appliesTo(    Transformation node){
      return node.hasProperty(solutionSpace.getPropertyKAnonymous()) || node.hasProperty(solutionSpace.getPropertyNotKAnonymous()) || node.hasProperty(solutionSpace.getPropertyInsufficientUtility());
    }
  }
;
  NodeAction binaryTriggerTag=new NodeAction(){
    @Override public void action(    Transformation node){
      if (node.hasProperty(solutionSpace.getPropertyKAnonymous())) {
        node.setPropertyToNeighbours(solutionSpace.getPropertyKAnonymous());
      }
 else {
        node.setPropertyToNeighbours(solutionSpace.getPropertyNotKAnonymous());
      }
      if (node.hasProperty(solutionSpace.getPropertyAnonymous())) {
        node.setPropertyToNeighbours(solutionSpace.getPropertyInsufficientUtility());
        node.setPropertyToNeighbours(solutionSpace.getPropertySuccessorsPruned());
        node.setProperty(solutionSpace.getPropertySuccessorsPruned());
      }
    }
    @Override public boolean appliesTo(    Transformation node){
      return node.hasProperty(solutionSpace.getPropertyKAnonymous()) || node.hasProperty(solutionSpace.getPropertyNotKAnonymous()) || node.hasProperty(solutionSpace.getPropertyAnonymous());
    }
  }
;
  NodeAction binaryTriggerCheck=new NodeActionInverse(binaryTriggerSkip);
  NodeAction binaryTriggerEvaluate=new NodeActionConstant(false);
  PredictiveProperty linearAnonymityProperty=solutionSpace.getPropertyAnonymous();
  NodeAction linearTriggerSkip=new NodeAction(){
    @Override public boolean appliesTo(    Transformation node){
      return node.hasProperty(solutionSpace.getPropertyVisited()) || node.hasProperty(solutionSpace.getPropertyNotKAnonymous()) || node.hasProperty(solutionSpace.getPropertyInsufficientUtility());
    }
  }
;
  NodeAction linearTriggerEvaluate=new NodeActionConstant(false);
  NodeAction linearTriggerCheck=new NodeAction(){
    @Override public boolean appliesTo(    Transformation node){
      return !node.hasProperty(solutionSpace.getPropertyVisited()) && !node.hasProperty(solutionSpace.getPropertyNotKAnonymous()) && !node.hasProperty(solutionSpace.getPropertyInsufficientUtility())&& !node.hasProperty(solutionSpace.getPropertyChecked());
    }
  }
;
  NodeAction linearTriggerTag=new NodeAction(){
    @Override public void action(    Transformation node){
      node.setProperty(solutionSpace.getPropertyVisited());
      if (node.hasProperty(solutionSpace.getPropertyAnonymous())) {
        node.setPropertyToNeighbours(solutionSpace.getPropertyInsufficientUtility());
        node.setPropertyToNeighbours(solutionSpace.getPropertySuccessorsPruned());
        node.setProperty(solutionSpace.getPropertySuccessorsPruned());
      }
    }
    @Override public boolean appliesTo(    Transformation node){
      return true;
    }
  }
;
  NodeAction triggerFireEvent=new NodeActionOR(linearTriggerSkip){
    @Override protected boolean additionalConditionAppliesTo(    Transformation node){
      return node.hasProperty(solutionSpace.getPropertySuccessorsPruned());
    }
  }
;
  FLASHConfiguration config=FLASHConfiguration.createTwoPhaseConfiguration(new FLASHPhaseConfiguration(binaryAnonymityProperty,binaryTriggerTag,binaryTriggerCheck,binaryTriggerEvaluate,binaryTriggerSkip),new FLASHPhaseConfiguration(linearAnonymityProperty,linearTriggerTag,linearTriggerCheck,linearTriggerEvaluate,linearTriggerSkip),triggerFireEvent,StorageStrategy.ALL,true,false);
  return new FLASHAlgorithmImpl(solutionSpace,checker,strategy,config);
}

Fixed version (ground truth):
/** 
 * Semantics of method name: monotonicity of criteria + monotonicity of metric.
 * @param solutionSpace
 * @param checker
 * @param strategy
 * @return
 */
private static AbstractAlgorithm createPartialFull(final SolutionSpace solutionSpace,final NodeChecker checker,final FLASHStrategy strategy){
  PhaseAnonymityProperty binaryAnonymityProperty=PhaseAnonymityProperty.K_ANONYMITY;
  NodeAction binaryTriggerSkip=new NodeAction(){
    @Override public boolean appliesTo(    Transformation node){
      return node.hasProperty(solutionSpace.getPropertyKAnonymous()) || node.hasProperty(solutionSpace.getPropertyNotKAnonymous()) || node.hasProperty(solutionSpace.getPropertyInsufficientUtility());
    }
  }
;
  NodeAction binaryTriggerTag=new NodeAction(){
    @Override public void action(    Transformation node){
      if (node.hasProperty(solutionSpace.getPropertyKAnonymous())) {
        node.setPropertyToNeighbours(solutionSpace.getPropertyKAnonymous());
      }
 else {
        node.setPropertyToNeighbours(solutionSpace.getPropertyNotKAnonymous());
      }
      if (node.hasProperty(solutionSpace.getPropertyAnonymous())) {
        node.setPropertyToNeighbours(solutionSpace.getPropertyInsufficientUtility());
        node.setPropertyToNeighbours(solutionSpace.getPropertySuccessorsPruned());
        node.setProperty(solutionSpace.getPropertySuccessorsPruned());
      }
    }
    @Override public boolean appliesTo(    Transformation node){
      return node.hasProperty(solutionSpace.getPropertyKAnonymous()) || node.hasProperty(solutionSpace.getPropertyNotKAnonymous()) || node.hasProperty(solutionSpace.getPropertyAnonymous());
    }
  }
;
  NodeAction binaryTriggerCheck=new NodeActionInverse(binaryTriggerSkip);
  NodeAction binaryTriggerEvaluate=new NodeActionConstant(false);
  PhaseAnonymityProperty linearAnonymityProperty=PhaseAnonymityProperty.ANONYMITY;
  NodeAction linearTriggerSkip=new NodeAction(){
    @Override public boolean appliesTo(    Transformation node){
      return node.hasProperty(solutionSpace.getPropertyVisited()) || node.hasProperty(solutionSpace.getPropertyNotKAnonymous()) || node.hasProperty(solutionSpace.getPropertyInsufficientUtility());
    }
  }
;
  NodeAction linearTriggerEvaluate=new NodeActionConstant(false);
  NodeAction linearTriggerCheck=new NodeAction(){
    @Override public boolean appliesTo(    Transformation node){
      return !node.hasProperty(solutionSpace.getPropertyVisited()) && !node.hasProperty(solutionSpace.getPropertyNotKAnonymous()) && !node.hasProperty(solutionSpace.getPropertyInsufficientUtility())&& !node.hasProperty(solutionSpace.getPropertyChecked());
    }
  }
;
  NodeAction linearTriggerTag=new NodeAction(){
    @Override public void action(    Transformation node){
      node.setProperty(solutionSpace.getPropertyVisited());
      if (node.hasProperty(solutionSpace.getPropertyAnonymous())) {
        node.setPropertyToNeighbours(solutionSpace.getPropertyInsufficientUtility());
        node.setPropertyToNeighbours(solutionSpace.getPropertySuccessorsPruned());
        node.setProperty(solutionSpace.getPropertySuccessorsPruned());
      }
    }
    @Override public boolean appliesTo(    Transformation node){
      return true;
    }
  }
;
  NodeAction triggerFireEvent=new NodeActionOR(linearTriggerSkip){
    @Override protected boolean additionalConditionAppliesTo(    Transformation node){
      return node.hasProperty(solutionSpace.getPropertySuccessorsPruned());
    }
  }
;
  FLASHConfiguration config=FLASHConfiguration.createTwoPhaseConfiguration(new FLASHPhaseConfiguration(binaryAnonymityProperty,binaryTriggerTag,binaryTriggerCheck,binaryTriggerEvaluate,binaryTriggerSkip),new FLASHPhaseConfiguration(linearAnonymityProperty,linearTriggerTag,linearTriggerCheck,linearTriggerEvaluate,linearTriggerSkip),triggerFireEvent,StorageStrategy.ALL,true,false);
  return new FLASHAlgorithmImpl(solutionSpace,checker,strategy,config);
}