Program: 75740
Project: 75740
Buggy source:
private boolean translate3DEvent(Object obj,Matrix transMatrix,double xOffset,double yOffset){
  if (obj instanceof Polygon3DRenderEvent) {
    Polygon3DRenderEvent p3dre=(Polygon3DRenderEvent)obj;
    Object3D object3D=p3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    boolean behind=checkBehindFace(p3dre);
    p3dre.setBehind(behind);
    if (p3dre.isBehind()) {
      return false;
    }
    double cosValue=object3D.getNormal().cosineValue(LDR);
    if (p3dre.isDoubleSided()) {
      cosValue=-Math.abs(cosValue);
    }
    double brightnessRatio=(1 - cosValue) / 2d;
    p3dre.setBrightness(brightnessRatio);
    object3D.clip(this);
    if (object3D.getVectors().length < 3) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    p3dre.prepare2D(xOffset,yOffset);
    return true;
  }
 else   if (obj instanceof Line3DRenderEvent) {
    Line3DRenderEvent l3dre=(Line3DRenderEvent)obj;
    if (l3dre.getLineAttributes() == null || !l3dre.getLineAttributes().isSetVisible() || !l3dre.getLineAttributes().isVisible()) {
      return false;
    }
    Object3D object3D=l3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 2) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    l3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Text3DRenderEvent) {
    Text3DRenderEvent t3dre=(Text3DRenderEvent)obj;
    Object3D object3D=t3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 1) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    t3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Oval3DRenderEvent) {
    Oval3DRenderEvent o3dre=(Oval3DRenderEvent)obj;
    Object3D object3D=o3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 3) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    o3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Image3DRenderEvent) {
    Image3DRenderEvent i3dre=(Image3DRenderEvent)obj;
    Object3D object3D=i3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 1) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    i3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Arc3DRenderEvent) {
    Arc3DRenderEvent a3dre=(Arc3DRenderEvent)obj;
    Object3D object3D=a3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 1) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    a3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Area3DRenderEvent) {
    Area3DRenderEvent a3dre=(Area3DRenderEvent)obj;
    for (Iterator itr=a3dre.iterator(); itr.hasNext(); ) {
      PrimitiveRenderEvent pre=(PrimitiveRenderEvent)itr.next();
      if (pre instanceof I3DRenderEvent) {
        try {
          Object3D object3D=((I3DRenderEvent)pre).getObject3D();
          object3D.transform(transMatrix);
          object3D.transform(M2V_MATRIX);
          object3D.prepareZSort();
          object3D.clip(this);
          if (object3D.getVectors().length < 1) {
            itr.remove();
            continue;
          }
          object3D.perspective(PERSPECTIVE_VALUE);
          object3D.transform(V2C_MATRIX);
        }
 catch (        ChartException ex) {
          logger.log(ex);
          continue;
        }
      }
    }
    a3dre.prepare2D(xOffset,yOffset);
  }
  return true;
}

Fixed version (ground truth):
private boolean translate3DEvent(Object obj,Matrix transMatrix,double xOffset,double yOffset){
  if (obj instanceof Polygon3DRenderEvent) {
    Polygon3DRenderEvent p3dre=(Polygon3DRenderEvent)obj;
    Object3D object3D=p3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    boolean behind=checkBehindFace(p3dre);
    p3dre.setBehind(behind);
    if (p3dre.isBehind()) {
      return false;
    }
    double cosValue=object3D.getNormal().cosineValue(LDR);
    if (p3dre.isDoubleSided()) {
      cosValue=-Math.abs(cosValue);
    }
    double brightnessRatio=(1 - cosValue) / 2d;
    p3dre.setBrightness(brightnessRatio);
    object3D.clip(this);
    if (object3D.getVectors().length < 3) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    p3dre.prepare2D(xOffset,yOffset);
    return true;
  }
 else   if (obj instanceof Line3DRenderEvent) {
    Line3DRenderEvent l3dre=(Line3DRenderEvent)obj;
    if (l3dre.getLineAttributes() == null || !l3dre.getLineAttributes().isSetVisible() || !l3dre.getLineAttributes().isVisible()) {
      return false;
    }
    Object3D object3D=l3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 2) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    l3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Text3DRenderEvent) {
    Text3DRenderEvent t3dre=(Text3DRenderEvent)obj;
    Object3D object3D=t3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 1) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    t3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Oval3DRenderEvent) {
    Oval3DRenderEvent o3dre=(Oval3DRenderEvent)obj;
    Object3D object3D=o3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 3) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    o3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Image3DRenderEvent) {
    Image3DRenderEvent i3dre=(Image3DRenderEvent)obj;
    Object3D object3D=i3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 1) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    i3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Arc3DRenderEvent) {
    Arc3DRenderEvent a3dre=(Arc3DRenderEvent)obj;
    Object3D object3D=a3dre.getObject3D();
    object3D.transform(transMatrix);
    object3D.transform(M2V_MATRIX);
    object3D.prepareZSort();
    object3D.clip(this);
    if (object3D.getVectors().length < 1) {
      return false;
    }
    object3D.perspective(PERSPECTIVE_VALUE);
    object3D.transform(V2C_MATRIX);
    a3dre.prepare2D(xOffset,yOffset);
  }
 else   if (obj instanceof Area3DRenderEvent) {
    Area3DRenderEvent a3dre=(Area3DRenderEvent)obj;
    for (Iterator itr=a3dre.iterator(); itr.hasNext(); ) {
      PrimitiveRenderEvent pre=(PrimitiveRenderEvent)itr.next();
      if (pre instanceof I3DRenderEvent) {
        Object3D object3D=((I3DRenderEvent)pre).getObject3D();
        object3D.transform(transMatrix);
        object3D.transform(M2V_MATRIX);
        object3D.prepareZSort();
        object3D.clip(this);
        if (object3D.getVectors().length < 1) {
          itr.remove();
          continue;
        }
        object3D.perspective(PERSPECTIVE_VALUE);
        object3D.transform(V2C_MATRIX);
      }
    }
    a3dre.prepare2D(xOffset,yOffset);
  }
  return true;
}