Program: 58277
Project: 58277
Buggy source:
private void renderNextDataDomain(final GL gl,String dataDomainType,float x,float y,boolean highlight,boolean mouseOver,float splineAchorX1,float splineAnchorX2,float splineAnchorY1,float splineAnchorY2){
  EIconTextures dataDomainIcon=null;
  float[] connectionSplineColor=new float[]{0.3f,0.3f,0.3f};
  if (!dataDomainType.equals("String_Node_Str")) {
    IDataDomain dataDomain=DataDomainManager.getInstance().getDataDomain(dataDomainType);
    dataDomainIcon=dataDomain.getIcon();
  }
 else   dataDomainIcon=EIconTextures.DATA_DOMAIN_ORGAN;
  gl.glTranslatef(x,y,DATA_DOMAIN_Z);
  gl.glPushName(pickingManager.getPickingID(iUniqueID,EPickingType.NEXT_DATA_DOMAIN_SELECTION,dataDomainType.hashCode()));
  EIconTextures iconTextureBackgroundRound=EIconTextures.DATA_FLIPPER_DATA_ICON_BACKGROUND_ROUND;
  float r=1;
  float g=1;
  float b=1;
  float a=1;
  float yIconOffset=0.02f;
  boolean isGuidanceDomain=false;
  for (  INode guidanceNode : guidancePath.getFollowingNodes(currentGuidanceNode)) {
    if (dataDomainType.equals(guidanceNode.getDataDomainType())) {
      isGuidanceDomain=true;
      break;
    }
  }
  if (!checkPreCondition(dataDomainType,mouseOverInterface) && currentGuidanceNode.allInterfacesVisited() && isGuidanceDomain) {
    r=1f;
    g=1f;
    b=1f;
    a=1;
    String conditionText="String_Node_Str";
    if (dataDomainType.equals("String_Node_Str"))     conditionText="String_Node_Str";
 else     if (dataDomainType.equals("String_Node_Str"))     conditionText="String_Node_Str";
 else     if (dataDomainType.equals("String_Node_Str"))     conditionText="String_Node_Str";
    textRenderer.setColor(0f,0f,0f,1);
    textRenderer.begin3DRendering();
    textRenderer.draw3D(conditionText,0.34f,0.0f,0,0.0028f);
    textRenderer.end3DRendering();
    connectionSplineColor=new float[]{0.3f,0f,0.0f};
    if (mouseOver) {
      r=0.3f;
      g=0.3f;
      b=0.3f;
      a=1;
      connectionSplineColor=new float[]{0.15f,0.15f,0.15f};
    }
    iconTextureBackgroundRound=EIconTextures.DATA_FLIPPER_DATA_ICON_BACKGROUND_ROUND_HIGHLIGHTED;
    yIconOffset=0.05f;
    textureManager.renderTexture(gl,EIconTextures.DATA_FLIPPER_EXCLAMATION_MARK,new Vec3f(0.25f,0.03f,0),new Vec3f(0.3f,0.03f,0),new Vec3f(0.3f,0.17f,0),new Vec3f(0.25f,0.17f,0),r,g,b,a);
  }
 else   if (mouseOver) {
    r=0.3f;
    g=0.3f;
    b=0.3f;
    a=1;
    connectionSplineColor=new float[]{0.15f,0.15f,0.15f};
  }
 else   if (highlight && currentGuidanceNode.allInterfacesVisited()) {
    r=1f;
    g=0.3f;
    b=0.3f;
    a=1;
    iconTextureBackgroundRound=EIconTextures.DATA_FLIPPER_DATA_ICON_BACKGROUND_ROUND_HIGHLIGHTED;
    yIconOffset=0.05f;
    connectionSplineColor=new float[]{0.3f,0.f,0.f};
  }
  textureManager.renderTexture(gl,iconTextureBackgroundRound,new Vec3f(0,0,0),new Vec3f(0.21f * DATA_DOMAIN_SCALING_FACTOR,0,0),new Vec3f(0.21f * DATA_DOMAIN_SCALING_FACTOR,0.2f * DATA_DOMAIN_SCALING_FACTOR,0),new Vec3f(0,0.2f * DATA_DOMAIN_SCALING_FACTOR,0),r,g,b,a);
  textureManager.renderTexture(gl,dataDomainIcon,new Vec3f(0f,yIconOffset,0.01f),new Vec3f(0.2f * DATA_DOMAIN_SCALING_FACTOR,yIconOffset * DATA_DOMAIN_SCALING_FACTOR,0.01f),new Vec3f(0.2f * DATA_DOMAIN_SCALING_FACTOR,0.18f * DATA_DOMAIN_SCALING_FACTOR,0.01f),new Vec3f(0.0f,0.18f * DATA_DOMAIN_SCALING_FACTOR,0.01f),1,1,1,1);
  gl.glPopName();
  for (  INode nextNode : guidancePath.getFollowingNodes(currentGuidanceNode)) {
    if (nextNode.getDataDomainType().equals(dataDomainType) && currentGuidanceNode.allInterfacesVisited()) {
      renderTaskDescription((GuidanceNode)nextNode,0.34f,0.07f,0.0035f);
      break;
    }
  }
  gl.glTranslatef(-x,-y,-DATA_DOMAIN_Z);
  gl.glLineWidth(5);
  float z=DATA_DOMAIN_Z;
  gl.glColor3fv(connectionSplineColor,0);
  ArrayList<Vec3f> points=new ArrayList<Vec3f>();
  points.add(new Vec3f(splineAchorX1,splineAnchorY1,z));
  points.add(new Vec3f(splineAchorX1 + Math.abs((splineAchorX1 - splineAnchorX2) / 3),splineAnchorY1,z));
  points.add(new Vec3f(splineAnchorX2 - Math.abs((splineAchorX1 - splineAnchorX2) / 3),splineAnchorY2,z));
  points.add(new Vec3f(splineAnchorX2,splineAnchorY2,z));
  renderSingleCurve(gl,points,20);
}

Fixed version (ground truth):
private void renderNextDataDomain(final GL gl,String dataDomainType,float x,float y,boolean highlight,boolean mouseOver,float splineAchorX1,float splineAnchorX2,float splineAnchorY1,float splineAnchorY2){
  EIconTextures dataDomainIcon=null;
  float[] connectionSplineColor=new float[]{0.3f,0.3f,0.3f};
  if (!dataDomainType.equals("String_Node_Str")) {
    IDataDomain dataDomain=DataDomainManager.getInstance().getDataDomain(dataDomainType);
    dataDomainIcon=dataDomain.getIcon();
  }
 else   dataDomainIcon=EIconTextures.DATA_DOMAIN_ORGAN;
  gl.glTranslatef(x,y,DATA_DOMAIN_Z);
  gl.glPushName(pickingManager.getPickingID(iUniqueID,EPickingType.NEXT_DATA_DOMAIN_SELECTION,dataDomainType.hashCode()));
  EIconTextures iconTextureBackgroundRound=EIconTextures.DATA_FLIPPER_DATA_ICON_BACKGROUND_ROUND;
  float r=1;
  float g=1;
  float b=1;
  float a=1;
  float yIconOffset=0.02f;
  boolean isGuidanceDomain=false;
  for (  INode guidanceNode : guidancePath.getFollowingNodes(currentGuidanceNode)) {
    if (dataDomainType.equals(guidanceNode.getDataDomainType())) {
      isGuidanceDomain=true;
      break;
    }
  }
  if (!checkPreCondition(dataDomainType,mouseOverInterface) && currentGuidanceNode.oneInterfaceVisited() && isGuidanceDomain) {
    r=1f;
    g=1f;
    b=1f;
    a=1;
    String conditionText="String_Node_Str";
    if (dataDomainType.equals("String_Node_Str"))     conditionText="String_Node_Str";
 else     if (dataDomainType.equals("String_Node_Str"))     conditionText="String_Node_Str";
 else     if (dataDomainType.equals("String_Node_Str"))     conditionText="String_Node_Str";
    textRenderer.setColor(0f,0f,0f,1);
    textRenderer.begin3DRendering();
    textRenderer.draw3D(conditionText,0.34f,0.0f,0,0.0028f);
    textRenderer.end3DRendering();
    connectionSplineColor=new float[]{0.3f,0f,0.0f};
    if (mouseOver) {
      r=0.3f;
      g=0.3f;
      b=0.3f;
      a=1;
      connectionSplineColor=new float[]{0.15f,0.15f,0.15f};
    }
    iconTextureBackgroundRound=EIconTextures.DATA_FLIPPER_DATA_ICON_BACKGROUND_ROUND_HIGHLIGHTED;
    yIconOffset=0.05f;
    textureManager.renderTexture(gl,EIconTextures.DATA_FLIPPER_EXCLAMATION_MARK,new Vec3f(0.25f,0.03f,0),new Vec3f(0.3f,0.03f,0),new Vec3f(0.3f,0.17f,0),new Vec3f(0.25f,0.17f,0),r,g,b,a);
  }
 else   if (mouseOver) {
    r=0.3f;
    g=0.3f;
    b=0.3f;
    a=1;
    connectionSplineColor=new float[]{0.15f,0.15f,0.15f};
  }
 else   if (highlight && currentGuidanceNode.oneInterfaceVisited()) {
    r=1f;
    g=0.3f;
    b=0.3f;
    a=1;
    iconTextureBackgroundRound=EIconTextures.DATA_FLIPPER_DATA_ICON_BACKGROUND_ROUND_HIGHLIGHTED;
    yIconOffset=0.05f;
    connectionSplineColor=new float[]{0.3f,0.f,0.f};
  }
  textureManager.renderTexture(gl,iconTextureBackgroundRound,new Vec3f(0,0,0),new Vec3f(0.21f * DATA_DOMAIN_SCALING_FACTOR,0,0),new Vec3f(0.21f * DATA_DOMAIN_SCALING_FACTOR,0.2f * DATA_DOMAIN_SCALING_FACTOR,0),new Vec3f(0,0.2f * DATA_DOMAIN_SCALING_FACTOR,0),r,g,b,a);
  textureManager.renderTexture(gl,dataDomainIcon,new Vec3f(0f,yIconOffset,0.01f),new Vec3f(0.2f * DATA_DOMAIN_SCALING_FACTOR,yIconOffset * DATA_DOMAIN_SCALING_FACTOR,0.01f),new Vec3f(0.2f * DATA_DOMAIN_SCALING_FACTOR,0.18f * DATA_DOMAIN_SCALING_FACTOR,0.01f),new Vec3f(0.0f,0.18f * DATA_DOMAIN_SCALING_FACTOR,0.01f),1,1,1,1);
  gl.glPopName();
  for (  INode nextNode : guidancePath.getFollowingNodes(currentGuidanceNode)) {
    if (nextNode.getDataDomainType().equals(dataDomainType) && currentGuidanceNode.oneInterfaceVisited()) {
      renderTaskDescription((GuidanceNode)nextNode,0.34f,0.07f,0.0035f);
      break;
    }
  }
  gl.glTranslatef(-x,-y,-DATA_DOMAIN_Z);
  gl.glLineWidth(5);
  float z=DATA_DOMAIN_Z;
  gl.glColor3fv(connectionSplineColor,0);
  ArrayList<Vec3f> points=new ArrayList<Vec3f>();
  points.add(new Vec3f(splineAchorX1,splineAnchorY1,z));
  points.add(new Vec3f(splineAchorX1 + Math.abs((splineAchorX1 - splineAnchorX2) / 3),splineAnchorY1,z));
  points.add(new Vec3f(splineAnchorX2 - Math.abs((splineAchorX1 - splineAnchorX2) / 3),splineAnchorY2,z));
  points.add(new Vec3f(splineAnchorX2,splineAnchorY2,z));
  renderSingleCurve(gl,points,20);
}