Program: 44456
Project: 44456
Buggy source:
private List<JAXBElement<?>> decodeRouteGeometry(String encoded,List<JAXBElement<?>> list,CoordinateReferenceSystem targetCRS,CoordinateReferenceSystem sourceCRS) throws NoSuchAuthorityCodeException, FactoryException, MismatchedDimensionException, TransformException {
  MathTransform transform=null;
  LOG.info(targetCRS.toWKT());
  LOG.info(sourceCRS.toWKT());
  double precision=5;
  precision=Math.pow(10,-precision);
  int len=encoded.length(), index=0, lat=0, lng=0;
  while (index < len) {
    int b, shift=0, result=0;
    do {
      b=encoded.charAt(index++) - 63;
      result|=(b & 0x1f) << shift;
      shift+=5;
    }
 while (b >= 0x20);
    int dlat=(((result & 1) != 0) ? ~(result >> 1) : (result >> 1));
    lat+=dlat;
    shift=0;
    result=0;
    do {
      b=encoded.charAt(index++) - 63;
      result|=(b & 0x1f) << shift;
      shift+=5;
    }
 while (b >= 0x20);
    int dlng=(((result & 1) != 0) ? ~(result >> 1) : (result >> 1));
    lng+=dlng;
    Coordinate coord=new Coordinate(lng * precision,lat * precision);
    Point sourceGeometry=gf.createPoint(coord);
    if (sourceCRS != targetCRS) {
      if (transform == null)       transform=CRS.findMathTransform(sourceCRS,targetCRS);
      sourceGeometry=JTS.transform(sourceGeometry,transform).getCentroid();
    }
    DirectPositionListType e=new DirectPositionListType();
    e.getValue().add(coord.x);
    e.getValue().add(coord.y);
    JAXBElement<DirectPositionListType> elem=new JAXBElement<DirectPositionListType>(new QName("String_Node_Str","String_Node_Str","String_Node_Str"),DirectPositionListType.class,e);
    list.add(elem);
  }
  return list;
}

Fixed version (ground truth):
private List<JAXBElement<?>> decodeRouteGeometry(String encoded,List<JAXBElement<?>> list,CoordinateReferenceSystem targetCRS,CoordinateReferenceSystem sourceCRS) throws NoSuchAuthorityCodeException, FactoryException, MismatchedDimensionException, TransformException {
  MathTransform transform=null;
  LOG.trace(targetCRS.toWKT());
  LOG.trace(sourceCRS.toWKT());
  double precision=5;
  precision=Math.pow(10,-precision);
  int len=encoded.length(), index=0, lat=0, lng=0;
  while (index < len) {
    int b, shift=0, result=0;
    do {
      b=encoded.charAt(index++) - 63;
      result|=(b & 0x1f) << shift;
      shift+=5;
    }
 while (b >= 0x20);
    int dlat=(((result & 1) != 0) ? ~(result >> 1) : (result >> 1));
    lat+=dlat;
    shift=0;
    result=0;
    do {
      b=encoded.charAt(index++) - 63;
      result|=(b & 0x1f) << shift;
      shift+=5;
    }
 while (b >= 0x20);
    int dlng=(((result & 1) != 0) ? ~(result >> 1) : (result >> 1));
    lng+=dlng;
    Coordinate coord=new Coordinate(lat * precision,lng * precision);
    Point sourceGeometry=gf.createPoint(coord);
    LOG.info(sourceGeometry);
    if (sourceCRS != targetCRS) {
      if (transform == null)       transform=CRS.findMathTransform(sourceCRS,targetCRS);
      sourceGeometry=JTS.transform(sourceGeometry,transform).getCentroid();
      LOG.info(sourceGeometry);
    }
    DirectPositionListType e=new DirectPositionListType();
    e.getValue().add(sourceGeometry.getY());
    e.getValue().add(sourceGeometry.getX());
    JAXBElement<DirectPositionListType> elem=new JAXBElement<DirectPositionListType>(new QName("String_Node_Str","String_Node_Str","String_Node_Str"),DirectPositionListType.class,e);
    list.add(elem);
  }
  return list;
}