Program: 90732
Project: 90732
Buggy source:
public String toString(PortalURL url){
  StringBuffer sb=new StringBuffer();
  sb.append(url.getServerUri()).append(url.getControllerPath());
  if (url.getRenderPath() != null) {
    sb.append("String_Node_Str");
    sb.append(url.getRenderPath());
  }
  if (url.getActionWindow() != null) {
    sb.append("String_Node_Str");
    sb.append(PREFIX).append(ACTION).append(encode(url.getActionWindow()));
  }
  Iterator it=url.getPortletModes().entrySet().iterator();
  while (it.hasNext()) {
    Map.Entry entry=(Map.Entry)it.next();
    sb.append("String_Node_Str").append(encode(PORTLET_MODE,entry.getKey().toString(),entry.getValue().toString()));
  }
  it=url.getWindowStates().entrySet().iterator();
  while (it.hasNext()) {
    Map.Entry entry=(Map.Entry)it.next();
    sb.append("String_Node_Str").append(encode(WINDOW_STATE,entry.getKey().toString(),entry.getValue().toString()));
  }
  StringBuffer query=new StringBuffer("String_Node_Str");
  it=url.getParameters().iterator();
  while (it.hasNext()) {
    PortalUrlParameter param=(PortalUrlParameter)it.next();
    if (url.getActionWindow() != null && url.getActionWindow().equals(param.getWindowId())) {
      query.append("String_Node_Str").append(param.getName()).append("String_Node_Str").append(convert(param.getValues()));
    }
 else     if (param.getValues() != null && param.getValues().length > 0) {
      String valueString=encode(param.getValues());
      if (valueString.length() > 0) {
        sb.append("String_Node_Str").append(encode(RENDER_PARAM,param.getWindowId(),param.getName()));
        sb.append("String_Node_Str").append(valueString);
      }
    }
  }
  return sb.append(query).toString();
}

Fixed version (ground truth):
public String toString(PortalURL url){
  StringBuffer sb=new StringBuffer();
  sb.append(url.getServerUri()).append(url.getControllerPath());
  if (url.getRenderPath() != null) {
    sb.append("String_Node_Str");
    sb.append(url.getRenderPath());
  }
  if (url.getActionWindow() != null) {
    sb.append("String_Node_Str");
    sb.append(PREFIX).append(ACTION).append(encode(url.getActionWindow()));
  }
  Iterator it=url.getPortletModes().entrySet().iterator();
  while (it.hasNext()) {
    Map.Entry entry=(Map.Entry)it.next();
    sb.append("String_Node_Str").append(encode(PORTLET_MODE,entry.getKey().toString(),entry.getValue().toString()));
  }
  it=url.getWindowStates().entrySet().iterator();
  while (it.hasNext()) {
    Map.Entry entry=(Map.Entry)it.next();
    sb.append("String_Node_Str").append(encode(WINDOW_STATE,entry.getKey().toString(),entry.getValue().toString()));
  }
  StringBuffer query=new StringBuffer("String_Node_Str");
  it=url.getParameters().iterator();
  while (it.hasNext()) {
    PortalUrlParameter param=(PortalUrlParameter)it.next();
    if (url.getActionWindow() != null && url.getActionWindow().equals(param.getWindowId())) {
      for (int i=0; i < param.getValues().length; i++) {
        query.append("String_Node_Str").append(param.getName()).append("String_Node_Str").append(param.getValues()[i]);
      }
    }
 else     if (param.getValues() != null && param.getValues().length > 0) {
      String valueString=encode(param.getValues());
      if (valueString.length() > 0) {
        sb.append("String_Node_Str").append(encode(RENDER_PARAM,param.getWindowId(),param.getName()));
        sb.append("String_Node_Str").append(valueString);
      }
    }
  }
  return sb.append(query).toString();
}