Program: 60456
Project: 60456
Buggy source:
/** 
 * Utility that delegates to the actual service method of the servlet wrapped with a contextual request (i.e. with correctly computed path info). We need to suppress deprecation coz we use HttpServletRequestWrapper, which implements deprecated API for backwards compatibility.
 */
@SuppressWarnings({"String_Node_Str","String_Node_Str"}) void doService(final ServletRequest servletRequest,ServletResponse servletResponse) throws ServletException, IOException {
  HttpServletRequest request=new HttpServletRequestWrapper((HttpServletRequest)servletRequest){
    private String path;
    private boolean pathComputed=false;
    private boolean pathInfoComputed=false;
    private String pathInfo;
    @Override public String getPathInfo(){
      if (!isPathInfoComputed()) {
        final int servletPathLength=getServletPath().length();
        pathInfo=getRequestURI().substring(getContextPath().length()).replaceAll("String_Node_Str","String_Node_Str").substring(servletPathLength);
        if ("String_Node_Str".equals(pathInfo) && servletPathLength != 0) {
          pathInfo=null;
        }
        pathInfoComputed=true;
      }
      return pathInfo;
    }
    private boolean isPathInfoComputed(){
      return pathInfoComputed && !(null != servletRequest.getAttribute(REQUEST_DISPATCHER_REQUEST));
    }
    private boolean isPathComputed(){
      return pathComputed && !(null != servletRequest.getAttribute(REQUEST_DISPATCHER_REQUEST));
    }
    @Override public String getServletPath(){
      return computePath();
    }
    @Override public String getPathTranslated(){
      final String info=getPathInfo();
      return (null == info) ? null : getRealPath(info);
    }
    private String computePath(){
      if (!isPathComputed()) {
        String servletPath=super.getServletPath();
        path=patternMatcher.extractPath(servletPath);
        pathComputed=true;
        if (null == path) {
          path=servletPath;
        }
      }
      return path;
    }
  }
;
  httpServlet.get().service(request,servletResponse);
}

Fixed version (ground truth):
/** 
 * Utility that delegates to the actual service method of the servlet wrapped with a contextual request (i.e. with correctly computed path info). We need to suppress deprecation coz we use HttpServletRequestWrapper, which implements deprecated API for backwards compatibility.
 */
@SuppressWarnings({"String_Node_Str","String_Node_Str"}) void doService(final ServletRequest servletRequest,ServletResponse servletResponse) throws ServletException, IOException {
  HttpServletRequest request=new HttpServletRequestWrapper((HttpServletRequest)servletRequest){
    private String path;
    private boolean pathComputed=false;
    private boolean pathInfoComputed=false;
    private String pathInfo;
    @Override public String getPathInfo(){
      if (!isPathInfoComputed()) {
        int servletPathLength=getServletPath().length();
        pathInfo=getRequestURI().substring(getContextPath().length()).replaceAll("String_Node_Str","String_Node_Str");
        pathInfo=pathInfo.length() > servletPathLength ? pathInfo.substring(servletPathLength) : null;
        if ("String_Node_Str".equals(pathInfo) && servletPathLength != 0) {
          pathInfo=null;
        }
        pathInfoComputed=true;
      }
      return pathInfo;
    }
    private boolean isPathInfoComputed(){
      return pathInfoComputed && !(null != servletRequest.getAttribute(REQUEST_DISPATCHER_REQUEST));
    }
    private boolean isPathComputed(){
      return pathComputed && !(null != servletRequest.getAttribute(REQUEST_DISPATCHER_REQUEST));
    }
    @Override public String getServletPath(){
      return computePath();
    }
    @Override public String getPathTranslated(){
      final String info=getPathInfo();
      return (null == info) ? null : getRealPath(info);
    }
    private String computePath(){
      if (!isPathComputed()) {
        String servletPath=super.getServletPath();
        path=patternMatcher.extractPath(servletPath);
        pathComputed=true;
        if (null == path) {
          path=servletPath;
        }
      }
      return path;
    }
  }
;
  httpServlet.get().service(request,servletResponse);
}