Program: 72958
Project: 72958
Buggy source:
public void processAction(Action action,StructureSource source){
  if (ActionType.URL_REDIRECT_LITERAL.equals(action.getType())) {
    URLValue uv=(URLValue)action.getValue();
    String sa=uv.getBaseUrl();
    String target=null;
    if (StructureType.SERIES_DATA_POINT.equals(source.getType())) {
      final DataPointHints dph=(DataPointHints)source.getSource();
      try {
        final ActionHandle handle=ModuleUtil.deserializeAction(sa);
        target=handle.getTargetWindow();
        sa=handler.getURL(new IAction(){
          public int getType(){
            if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType()))             return IAction.ACTION_HYPERLINK;
            if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType()))             return IAction.ACTION_BOOKMARK;
            if (DesignChoiceConstants.ACTION_LINK_TYPE_DRILL_THROUGH.equals(handle.getLinkType()))             return IAction.ACTION_DRILLTHROUGH;
            return 0;
          }
          public String getBookmark(){
            return ChartUtil.stringValue(dph.getUserValue(handle.getTargetBookmark()));
          }
          public String getActionString(){
            if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType()))             return ChartUtil.stringValue(dph.getUserValue(handle.getURI()));
            if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType()))             return ChartUtil.stringValue(dph.getUserValue(handle.getTargetBookmark()));
            return null;
          }
          public String getReportName(){
            return handle.getReportName();
          }
          public Map getParameterBindings(){
            Map map=new HashMap();
            MemberHandle params=handle.getParamBindings();
            if (params != null) {
              for (Iterator itr=params.iterator(); itr.hasNext(); ) {
                ParamBindingHandle pbh=(ParamBindingHandle)itr.next();
                map.put(pbh.getParamName(),dph.getUserValue(pbh.getExpression()));
              }
            }
            return map;
          }
          public Map getSearchCriteria(){
            Map map=new HashMap();
            MemberHandle searches=handle.getSearch();
            if (searches != null) {
              for (Iterator itr=searches.iterator(); itr.hasNext(); ) {
                SearchKeyHandle skh=(SearchKeyHandle)itr.next();
                map.put(skh.getExpression(),dph.getUserValue(skh.getExpression()));
              }
            }
            return map;
          }
          public String getTargetWindow(){
            return handle.getTargetWindow();
          }
          public String getFormat(){
            return handle.getFormatType();
          }
          public boolean isBookmark(){
            return DesignChoiceConstants.ACTION_BOOKMARK_TYPE_BOOKMARK.equals(handle.getTargetBookmarkType());
          }
          public String getSystemId(){
            ModuleHandle mod=eih.getRoot();
            if (mod != null) {
              return mod.getFileName();
            }
            return null;
          }
          public String getTargetFileType(){
            return handle.getTargetFileType();
          }
        }
,context);
      }
 catch (      Exception e) {
        sa="String_Node_Str";
        logger.log(e);
      }
    }
 else {
      try {
        final ActionHandle handle=ModuleUtil.deserializeAction(sa);
        target=handle.getTargetWindow();
        sa=handler.getURL(new IAction(){
          public int getType(){
            if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType()))             return IAction.ACTION_HYPERLINK;
            if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType()))             return IAction.ACTION_BOOKMARK;
            if (DesignChoiceConstants.ACTION_LINK_TYPE_DRILL_THROUGH.equals(handle.getLinkType()))             return IAction.ACTION_DRILLTHROUGH;
            return 0;
          }
          public String getBookmark(){
            return ChartUtil.stringValue(evaluator.evaluate(handle.getTargetBookmark()));
          }
          public String getActionString(){
            if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType()))             return ChartUtil.stringValue(evaluator.evaluate(handle.getURI()));
            if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType()))             return ChartUtil.stringValue(evaluator.evaluate(handle.getTargetBookmark()));
            return null;
          }
          public String getReportName(){
            return handle.getReportName();
          }
          public Map getParameterBindings(){
            Map map=new HashMap();
            MemberHandle params=handle.getParamBindings();
            if (params != null) {
              for (Iterator itr=params.iterator(); itr.hasNext(); ) {
                ParamBindingHandle pbh=(ParamBindingHandle)itr.next();
                map.put(pbh.getParamName(),evaluator.evaluate(pbh.getExpression()));
              }
            }
            return map;
          }
          public Map getSearchCriteria(){
            Map map=new HashMap();
            MemberHandle searches=handle.getSearch();
            if (searches != null) {
              for (Iterator itr=searches.iterator(); itr.hasNext(); ) {
                SearchKeyHandle skh=(SearchKeyHandle)itr.next();
                map.put(skh.getExpression(),evaluator.evaluate(skh.getExpression()));
              }
            }
            return map;
          }
          public String getTargetWindow(){
            return handle.getTargetWindow();
          }
          public String getFormat(){
            return handle.getFormatType();
          }
          public boolean isBookmark(){
            return DesignChoiceConstants.ACTION_BOOKMARK_TYPE_BOOKMARK.equals(handle.getTargetBookmarkType());
          }
          public String getSystemId(){
            ModuleHandle mod=eih.getRoot();
            if (mod != null) {
              return mod.getFileName();
            }
            return null;
          }
          public String getTargetFileType(){
            return handle.getTargetFileType();
          }
        }
,context);
      }
 catch (      Exception e) {
        sa="String_Node_Str";
        logger.log(e);
      }
    }
    uv.setBaseUrl(sa);
    uv.setTarget(target);
  }
 else   if (ActionType.SHOW_TOOLTIP_LITERAL.equals(action.getType())) {
    TooltipValue tv=(TooltipValue)action.getValue();
    if (StructureType.SERIES_DATA_POINT.equals(source.getType())) {
      final DataPointHints dph=(DataPointHints)source.getSource();
      tv.setText(ChartUtil.stringValue(dph.getUserValue(tv.getText())));
    }
  }
 else   if (ActionType.INVOKE_SCRIPT_LITERAL.equals(action.getType())) {
    ScriptValue sv=(ScriptValue)action.getValue();
    if (cacheScriptEvaluator == null) {
      cacheScriptEvaluator=new HashMap();
    }
    String evaluatResult=(String)cacheScriptEvaluator.get(sv.getScript());
    if (evaluatResult == null) {
      evaluatResult=evaluateExpression(sv.getScript());
      cacheScriptEvaluator.put(sv.getScript(),evaluatResult);
    }
    sv.setScript(evaluatResult);
  }
}

Fixed version (ground truth):
public void processAction(Action action,StructureSource source){
  if (ActionType.URL_REDIRECT_LITERAL.equals(action.getType())) {
    URLValue uv=(URLValue)action.getValue();
    String sa=uv.getBaseUrl();
    String target=null;
    if (StructureType.SERIES_DATA_POINT.equals(source.getType())) {
      final DataPointHints dph=(DataPointHints)source.getSource();
      try {
        final ActionHandle handle=ModuleUtil.deserializeAction(sa);
        target=handle.getTargetWindow();
        sa=handler.getURL(new IAction(){
          public int getType(){
            if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType()))             return IAction.ACTION_HYPERLINK;
            if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType()))             return IAction.ACTION_BOOKMARK;
            if (DesignChoiceConstants.ACTION_LINK_TYPE_DRILL_THROUGH.equals(handle.getLinkType()))             return IAction.ACTION_DRILLTHROUGH;
            return 0;
          }
          public String getBookmark(){
            return ChartUtil.stringValue(dph.getUserValue(handle.getTargetBookmark()));
          }
          public String getActionString(){
            if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType()))             return ChartUtil.stringValue(dph.getUserValue(handle.getURI()));
            if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType()))             return ChartUtil.stringValue(dph.getUserValue(handle.getTargetBookmark()));
            return null;
          }
          public String getReportName(){
            return handle.getReportName();
          }
          public Map getParameterBindings(){
            Map map=new HashMap();
            MemberHandle params=handle.getParamBindings();
            if (params != null) {
              for (Iterator itr=params.iterator(); itr.hasNext(); ) {
                ParamBindingHandle pbh=(ParamBindingHandle)itr.next();
                map.put(pbh.getParamName(),dph.getUserValue(pbh.getExpression()));
              }
            }
            return map;
          }
          public Map getSearchCriteria(){
            Map map=new HashMap();
            MemberHandle searches=handle.getSearch();
            if (searches != null) {
              for (Iterator itr=searches.iterator(); itr.hasNext(); ) {
                SearchKeyHandle skh=(SearchKeyHandle)itr.next();
                map.put(skh.getExpression(),dph.getUserValue(skh.getExpression()));
              }
            }
            return map;
          }
          public String getTargetWindow(){
            return handle.getTargetWindow();
          }
          public String getFormat(){
            return handle.getFormatType();
          }
          public boolean isBookmark(){
            return DesignChoiceConstants.ACTION_BOOKMARK_TYPE_BOOKMARK.equals(handle.getTargetBookmarkType());
          }
          public String getSystemId(){
            ModuleHandle mod=eih.getRoot();
            if (mod != null) {
              return mod.getFileName();
            }
            return null;
          }
          public String getTargetFileType(){
            return handle.getTargetFileType();
          }
          public String getTooltip(){
            return handle.getToolTip();
          }
        }
,context);
      }
 catch (      Exception e) {
        sa="String_Node_Str";
        logger.log(e);
      }
    }
 else {
      try {
        final ActionHandle handle=ModuleUtil.deserializeAction(sa);
        target=handle.getTargetWindow();
        sa=handler.getURL(new IAction(){
          public int getType(){
            if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType()))             return IAction.ACTION_HYPERLINK;
            if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType()))             return IAction.ACTION_BOOKMARK;
            if (DesignChoiceConstants.ACTION_LINK_TYPE_DRILL_THROUGH.equals(handle.getLinkType()))             return IAction.ACTION_DRILLTHROUGH;
            return 0;
          }
          public String getBookmark(){
            return ChartUtil.stringValue(evaluator.evaluate(handle.getTargetBookmark()));
          }
          public String getActionString(){
            if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType()))             return ChartUtil.stringValue(evaluator.evaluate(handle.getURI()));
            if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType()))             return ChartUtil.stringValue(evaluator.evaluate(handle.getTargetBookmark()));
            return null;
          }
          public String getReportName(){
            return handle.getReportName();
          }
          public Map getParameterBindings(){
            Map map=new HashMap();
            MemberHandle params=handle.getParamBindings();
            if (params != null) {
              for (Iterator itr=params.iterator(); itr.hasNext(); ) {
                ParamBindingHandle pbh=(ParamBindingHandle)itr.next();
                map.put(pbh.getParamName(),evaluator.evaluate(pbh.getExpression()));
              }
            }
            return map;
          }
          public Map getSearchCriteria(){
            Map map=new HashMap();
            MemberHandle searches=handle.getSearch();
            if (searches != null) {
              for (Iterator itr=searches.iterator(); itr.hasNext(); ) {
                SearchKeyHandle skh=(SearchKeyHandle)itr.next();
                map.put(skh.getExpression(),evaluator.evaluate(skh.getExpression()));
              }
            }
            return map;
          }
          public String getTargetWindow(){
            return handle.getTargetWindow();
          }
          public String getFormat(){
            return handle.getFormatType();
          }
          public boolean isBookmark(){
            return DesignChoiceConstants.ACTION_BOOKMARK_TYPE_BOOKMARK.equals(handle.getTargetBookmarkType());
          }
          public String getSystemId(){
            ModuleHandle mod=eih.getRoot();
            if (mod != null) {
              return mod.getFileName();
            }
            return null;
          }
          public String getTargetFileType(){
            return handle.getTargetFileType();
          }
          public String getTooltip(){
            return handle.getToolTip();
          }
        }
,context);
      }
 catch (      Exception e) {
        sa="String_Node_Str";
        logger.log(e);
      }
    }
    uv.setBaseUrl(sa);
    uv.setTarget(target);
  }
 else   if (ActionType.SHOW_TOOLTIP_LITERAL.equals(action.getType())) {
    TooltipValue tv=(TooltipValue)action.getValue();
    if (StructureType.SERIES_DATA_POINT.equals(source.getType())) {
      final DataPointHints dph=(DataPointHints)source.getSource();
      tv.setText(ChartUtil.stringValue(dph.getUserValue(tv.getText())));
    }
  }
 else   if (ActionType.INVOKE_SCRIPT_LITERAL.equals(action.getType())) {
    ScriptValue sv=(ScriptValue)action.getValue();
    if (cacheScriptEvaluator == null) {
      cacheScriptEvaluator=new HashMap();
    }
    String evaluatResult=(String)cacheScriptEvaluator.get(sv.getScript());
    if (evaluatResult == null) {
      evaluatResult=evaluateExpression(sv.getScript());
      cacheScriptEvaluator.put(sv.getScript(),evaluatResult);
    }
    sv.setScript(evaluatResult);
  }
}