Program: 58617
Project: 58617
Buggy source:
public float calculateRecursiveLayout(IDrawAbleNode node,float fRadius,float fParentAngle,float fLayer,float fNodeSize,float fXCoordOfParent,float fYCoordOfParent){
  if (fLayer <= fDepth) {
    float fNumberOfNodesInNewLayer=tree.getNumberOfElementsInLayer((int)fLayer);
    if (tree.hasChildren(node)) {
      ArrayList<IDrawAbleNode> childsOfCurrentNode=new ArrayList<IDrawAbleNode>();
      childsOfCurrentNode=tree.getChildren(node);
      float fDeltaRadius=fRadius;
      float fChildSpace=(fDeltaRadius * (float)Math.PI) / (childsOfCurrentNode.size() + 1);
      float fNumberOfChildsOfNode=childsOfCurrentNode.size();
      float fChildCount=0.0f;
      float fChildAngle=0.0f;
      for (      IDrawAbleNode tmpChild : childsOfCurrentNode) {
        fChildCount++;
        fChildAngle=calculateChildAngle(fParentAngle,fChildSpace,fDeltaRadius,fChildCount);
        float fRealChildAngle=fParentAngle - ((fChildAngle * (fNumberOfChildsOfNode - 1)) / 2) + fChildAngle * (fChildCount - 1);
        calcualteChildPosition(fDeltaRadius,fRealChildAngle,fChildCount,fXCoordOfParent,fYCoordOfParent);
        float fXCoord=getFXCoord();
        float fYCoord=getFYCoord();
{
          float fLayerOfBranch=calculateRecursiveLayout(tmpChild,fDeltaRadius,fRealChildAngle,fLayer + 1,fNodeSize,fXCoord,fYCoord);
          fNodeSize=HyperbolicRenderStyle.MAX_NODE_SIZE * (float)Math.pow(HyperbolicRenderStyle.NODE_SCALING_PER_LAYER,fLayer);
          tmpChild.setDetailLevel(EDrawAbleNodeDetailLevel.Low);
          DrawAbleHyperbolicGeometryGlobeProjection p=new DrawAbleHyperbolicGeometryGlobeProjection(node,tmpChild,fvViewCenterPoint,fHeight / 2);
          if (bHyperbolicFlag) {
            Vec3f tmpLinPointCoord=new Vec3f();
            Vec3f projectedPointCoord=new Vec3f();
            tmpLinPointCoord.set(fXCoord,fYCoord,0.0f);
            projectedPointCoord=treeProjector.projectCoordinates(tmpLinPointCoord);
            placeNode(tmpChild,projectedPointCoord.x(),projectedPointCoord.y(),projectedPointCoord.z(),fNodeSize,fNodeSize);
          }
 else           placeNode(tmpChild,fXCoord,fYCoord,0.0f,fNodeSize,fNodeSize);
          placeConnection(new DrawAbleHyperbolicGeometryConnection(node,tmpChild,fvViewCenterPoint,fViewRadius));
        }
      }
    }
  }
  return fLayer;
}

Fixed version (ground truth):
public float calculateRecursiveLayout(IDrawAbleNode node,float fRadius,float fParentAngle,float fLayer,float fNodeSize,float fXCoordOfParent,float fYCoordOfParent){
  if (fLayer <= fDepth) {
    float fNumberOfNodesInNewLayer=tree.getNumberOfElementsInLayer((int)fLayer);
    if (tree.hasChildren(node)) {
      ArrayList<IDrawAbleNode> childsOfCurrentNode=new ArrayList<IDrawAbleNode>();
      childsOfCurrentNode=tree.getChildren(node);
      float fDeltaRadius=fRadius;
      float fChildSpace=(fDeltaRadius * (float)Math.PI) / (childsOfCurrentNode.size() + 1);
      float fNumberOfChildsOfNode=childsOfCurrentNode.size();
      float fChildCount=0.0f;
      float fChildAngle=0.0f;
      for (      IDrawAbleNode tmpChild : childsOfCurrentNode) {
        fChildCount++;
        fChildAngle=calculateChildAngle(fParentAngle,fChildSpace,fDeltaRadius,fChildCount);
        float fRealChildAngle=fParentAngle - ((fChildAngle * (fNumberOfChildsOfNode - 1)) / 2) + fChildAngle * (fChildCount - 1);
        calcualteChildPosition(fDeltaRadius,fRealChildAngle,fChildCount,fXCoordOfParent,fYCoordOfParent);
        float fXCoord=getFXCoord();
        float fYCoord=getFYCoord();
{
          float fLayerOfBranch=calculateRecursiveLayout(tmpChild,fDeltaRadius,fRealChildAngle,fLayer + 1,fNodeSize,fXCoord,fYCoord);
          fNodeSize=HyperbolicRenderStyle.MAX_NODE_SIZE * (float)Math.pow(HyperbolicRenderStyle.NODE_SCALING_PER_LAYER,fLayer);
          tmpChild.setDetailLevel(EDrawAbleNodeDetailLevel.Low);
          ITreeProjection p=new HyperbolicGlobeProjection(1,fHeight,fWidth,1.0f,fViewSpaceX,fViewSpaceXAbs,fViewSpaceY,fViewSpaceYAbs);
          if (bHyperbolicFlag) {
            Vec3f tmpLinPointCoord=new Vec3f();
            Vec3f projectedPointCoord=new Vec3f();
            tmpLinPointCoord.set(fXCoord,fYCoord,0.0f);
            projectedPointCoord=treeProjector.projectCoordinates(tmpLinPointCoord);
            placeNode(tmpChild,projectedPointCoord.x(),projectedPointCoord.y(),projectedPointCoord.z(),fNodeSize,fNodeSize);
          }
 else           placeNode(tmpChild,fXCoord,fYCoord,0.0f,fNodeSize,fNodeSize);
          placeConnection(new DrawAbleHyperbolicGeometryConnection(node,tmpChild,fvViewCenterPoint,fViewRadius));
        }
      }
    }
  }
  return fLayer;
}