Program: 58616
Project: 58616
Buggy source:
@Override public void draw(GL gl,boolean bHighlight){
  if (bHighlight) {
    gl.glColor4fv(HyperbolicRenderStyle.DA_HB_GEOM_CONNECTION_COLORSHEME_HL,0);
    gl.glLineWidth(HyperbolicRenderStyle.DA_HB_GEOM_CONNECTION_THICKNESS_HL);
  }
 else {
    gl.glColor4fv(HyperbolicRenderStyle.DA_HB_GEOM_CONNECTION_COLORSHEME,0);
    gl.glLineWidth(HyperbolicRenderStyle.DA_HB_GEOM_CONNECTION_THICKNESS);
  }
  Vec3f[] endPoints=findClosestCorrespondendingPoints();
  Vec3f pStartP=endPoints[0];
  Vec3f pEndP=endPoints[1];
  Vec2f v2Start=new Vec2f(pStartP.x(),pStartP.y());
  Vec2f v2End=new Vec2f(pEndP.x(),pEndP.y());
  float alpha=(float)Math.acos((v2Start.x() * v2End.x() + v2Start.y() * v2End.y()) / (v2Start.length() * v2End.length()));
  if (v2Start.x() > fvHTCenterpoint.x())   if (v2Start.y() > v2End.y())   alpha=alpha * -1.0f;
 else   ;
 else   if (v2Start.y() < v2End.y())   alpha=alpha * -1.0f;
 else   ;
  Vec3f vSE=new Vec3f(pEndP.x() - pStartP.x(),pEndP.y() - pStartP.y(),pEndP.z() - pStartP.z());
  Vec3f pSpP1=new Vec3f(pStartP.x() + vSE.x() / 2.0f,pStartP.y() + vSE.y() / 2.0f,pStartP.z() + vSE.z() / 2.0f);
  Vec3f pSpP2=new Vec3f((float)(pSpP1.x() + Math.sin(alpha)),(float)(pSpP1.y() + Math.sin(alpha)),pSpP1.z());
  FloatBuffer fBuff;
  fBuff=FloatBuffer.allocate(3 * 3);
  if (Math.abs(alpha) < 2 * Math.PI / 180.0f) {
    float[] fA={pStartP.x(),pStartP.y(),pStartP.z(),pSpP1.x(),pSpP1.y(),pSpP1.z(),pEndP.x(),pEndP.y(),pEndP.z()};
    fBuff.put(fA);
  }
 else {
    float[] fA={pStartP.x(),pStartP.y(),pStartP.z(),pSpP2.x(),pSpP2.y(),pSpP2.z(),pEndP.x(),pEndP.y(),pEndP.z()};
    fBuff.put(fA);
  }
  fBuff.rewind();
  gl.glEnable(GL.GL_MAP1_VERTEX_3);
  gl.glMap1f(GL.GL_MAP1_VERTEX_3,0.0f,1.0f,3,3,fBuff);
  gl.glBegin(GL.GL_LINE_STRIP);
  for (int i=0; i <= HyperbolicRenderStyle.DA_SPLINE_CONNECTION_NR_CTRLPOINTS; i++)   gl.glEvalCoord1f((float)i / (float)HyperbolicRenderStyle.DA_SPLINE_CONNECTION_NR_CTRLPOINTS);
  gl.glEnd();
}

Fixed version (ground truth):
@Override public void draw(GL gl,boolean bHighlight){
  if (bHighlight) {
    gl.glColor4fv(HyperbolicRenderStyle.DA_HB_GEOM_CONNECTION_COLORSHEME_HL,0);
    gl.glLineWidth(HyperbolicRenderStyle.DA_HB_GEOM_CONNECTION_THICKNESS_HL);
  }
 else {
    gl.glColor4fv(HyperbolicRenderStyle.DA_HB_GEOM_CONNECTION_COLORSHEME,0);
    gl.glLineWidth(HyperbolicRenderStyle.DA_HB_GEOM_CONNECTION_THICKNESS);
  }
  Vec3f[] endPoints=findClosestCorrespondendingPoints();
  Vec3f pStartP=endPoints[0];
  Vec3f pEndP=endPoints[1];
  Vec3f vSE=new Vec3f(pEndP.x() - pStartP.x(),pEndP.y() - pStartP.y(),pEndP.z() - pStartP.z());
  Vec3f pSpP1=new Vec3f(pStartP.x() + vSE.x() / 2.0f,pStartP.y() + vSE.y() / 2.0f,pStartP.z() + vSE.z() / 2.0f);
  Vec2f v2Start=new Vec2f(pStartP.x(),pStartP.y());
  Vec2f v2End=new Vec2f(pEndP.x(),pEndP.y());
  FloatBuffer fBuff;
  fBuff=FloatBuffer.allocate(3 * 3);
  float[] fA={pStartP.x(),pStartP.y(),pStartP.z(),pSpP1.x(),pSpP1.y(),pSpP1.z(),pEndP.x(),pEndP.y(),pEndP.z()};
  fBuff.put(fA);
  fBuff.rewind();
  gl.glEnable(GL.GL_MAP1_VERTEX_3);
  gl.glMap1f(GL.GL_MAP1_VERTEX_3,0.0f,1.0f,3,3,fBuff);
  gl.glBegin(GL.GL_LINE_STRIP);
  for (int i=0; i <= HyperbolicRenderStyle.DA_SPLINE_CONNECTION_NR_CTRLPOINTS; i++)   gl.glEvalCoord1f((float)i / (float)HyperbolicRenderStyle.DA_SPLINE_CONNECTION_NR_CTRLPOINTS);
  gl.glEnd();
}