Program: 78760
Project: 78760
Buggy source:
/** 
 * post-process the triggers.
 * @param tg
 * @param dph
 */
public void processTrigger(Trigger tg,StructureSource source){
  IActionRenderer iar=getRunTimeContext().getActionRenderer();
  if (iar != null) {
    iar.processAction(tg.getAction(),source);
  }
  if (StructureType.SERIES_DATA_POINT.equals(source.getType())) {
    DataPointHints dph=(DataPointHints)source.getSource();
    if (tg.getAction().getType() == ActionType.SHOW_TOOLTIP_LITERAL) {
      ((TooltipValue)tg.getAction().getValue()).setText(dph.getDisplayValue());
    }
 else     if (tg.getAction().getType() == ActionType.URL_REDIRECT_LITERAL) {
      final URLValue uv=(URLValue)tg.getAction().getValue();
      final String sBaseURL=uv.getBaseUrl();
      final StringBuffer sb=new StringBuffer(sBaseURL);
      char c='?';
      if (sBaseURL.indexOf(c) != -1) {
        c='&';
      }
      if (uv.getBaseParameterName() != null && uv.getBaseParameterName().length() > 0) {
        sb.append(c);
        c='&';
        sb.append(URLValueImpl.encode(uv.getBaseParameterName()));
        sb.append('=');
        sb.append(URLValueImpl.encode(dph.getBaseDisplayValue()));
      }
      if (uv.getValueParameterName() != null && uv.getValueParameterName().length() > 0) {
        sb.append(c);
        c='&';
        sb.append(URLValueImpl.encode(uv.getValueParameterName()));
        sb.append('=');
        sb.append(URLValueImpl.encode(dph.getOrthogonalDisplayValue()));
      }
      uv.setBaseUrl(sb.toString());
    }
  }
}

Fixed version (ground truth):
/** 
 * post-process the triggers.
 * @param tg
 * @param dph
 */
public void processTrigger(Trigger tg,StructureSource source){
  IActionRenderer iar=getRunTimeContext().getActionRenderer();
  if (iar != null) {
    iar.processAction(tg.getAction(),source);
  }
  if (StructureType.SERIES_DATA_POINT.equals(source.getType())) {
    DataPointHints dph=(DataPointHints)source.getSource();
    if (tg.getAction().getType() == ActionType.SHOW_TOOLTIP_LITERAL) {
      ((TooltipValue)tg.getAction().getValue()).setText(dph.getDisplayValue());
    }
 else     if (tg.getAction().getType() == ActionType.URL_REDIRECT_LITERAL) {
      final URLValue uv=(URLValue)tg.getAction().getValue();
      final String sBaseURL=uv.getBaseUrl();
      final StringBuffer sb=new StringBuffer(sBaseURL);
      char c='?';
      if (sBaseURL.indexOf(c) != -1) {
        c='&';
      }
      if (uv.getBaseParameterName() != null && uv.getBaseParameterName().length() > 0) {
        sb.append(c);
        c='&';
        sb.append(URLValueImpl.encode(uv.getBaseParameterName()));
        sb.append('=');
        sb.append(URLValueImpl.encode(dph.getBaseDisplayValue()));
      }
      if (uv.getValueParameterName() != null && uv.getValueParameterName().length() > 0) {
        sb.append(c);
        c='&';
        sb.append(URLValueImpl.encode(uv.getValueParameterName()));
        sb.append('=');
        sb.append(URLValueImpl.encode(dph.getOrthogonalDisplayValue()));
      }
      if (uv.getSeriesParameterName() != null && uv.getSeriesParameterName().length() > 0) {
        sb.append(c);
        c='&';
        sb.append(URLValueImpl.encode(uv.getSeriesParameterName()));
        sb.append('=');
        sb.append(URLValueImpl.encode(dph.getSeriesDisplayValue()));
      }
      uv.setBaseUrl(sb.toString());
    }
  }
}