Program: 69137
Project: 69137
Buggy source:
/** 
 * Create filter provider by specified input.
 * @param input
 * @param providerInput
 * @return the created filter provider
 * @since 2.3
 */
public static AbstractFilterHandleProvider createFilterProvider(Object input,Object providerInput){
  AbstractFilterHandleProvider currentProvider=null;
  Object handle=null;
  if (input instanceof List<?>) {
    handle=((List<?>)input).get(0);
  }
 else {
    handle=input;
  }
  AbstractFilterHandleProvider baseProvider=getAdapter(new ChartPageGenerator(),AbstractFilterHandleProvider.class);
  if (baseProvider == null) {
    baseProvider=new FilterHandleProvider();
  }
  if (handle instanceof ReportItemHandle && ChartXTabUtil.getBindingCube((DesignElementHandle)handle) != null) {
    if (((ReportItemHandle)handle).getCube() != null && (ChartReportItemUtil.isChildOfMultiViewsHandle((DesignElementHandle)handle) || ((ReportItemHandle)handle).getDataBindingReference() != null)) {
      ReportItemHandle ref=((ReportItemHandle)handle).getDataBindingReference();
      if (ChartReportItemUtil.isChartHandle(ref)) {
        currentProvider=new ChartShareCubeFiltersHandleProvider(baseProvider);
      }
 else {
        currentProvider=new ChartShareCrosstabFiltersHandleProvider();
      }
    }
 else {
      currentProvider=new ChartCubeFilterHandleProvider(baseProvider);
    }
  }
 else {
    if (ChartReportItemUtil.isChildOfMultiViewsHandle((DesignElementHandle)handle)) {
      currentProvider=new ChartShareFiltersHandleProvider(baseProvider);
    }
 else {
      currentProvider=new ChartFilterHandleProvider(baseProvider);
    }
  }
  if (input != null) {
    currentProvider.setInput(input);
  }
  return currentProvider;
}

Fixed version (ground truth):
/** 
 * Create filter provider by specified input.
 * @param input
 * @param providerInput
 * @return the created filter provider
 * @since 2.3
 */
public static AbstractFilterHandleProvider createFilterProvider(Object input,Object providerInput){
  AbstractFilterHandleProvider currentProvider=null;
  Object handle=null;
  if (input instanceof List<?>) {
    handle=((List<?>)input).get(0);
  }
 else {
    handle=input;
  }
  AbstractFilterHandleProvider baseProvider=getAdapter(new ChartPageGenerator(),AbstractFilterHandleProvider.class);
  if (baseProvider == null) {
    baseProvider=new FilterHandleProvider();
  }
  if (handle instanceof ReportItemHandle && ChartXTabUtil.getBindingCube((DesignElementHandle)handle) != null) {
    if (((ReportItemHandle)handle).getCube() != null && (ChartReportItemUtil.isChildOfMultiViewsHandle((DesignElementHandle)handle) || ((ReportItemHandle)handle).getDataBindingReference() != null)) {
      ReportItemHandle ref=((ReportItemHandle)handle).getDataBindingReference();
      if (ChartReportItemUtil.isChartHandle(ref)) {
        currentProvider=new ChartShareCubeFiltersHandleProvider(new FilterHandleProvider());
      }
 else {
        currentProvider=new ChartShareCrosstabFiltersHandleProvider();
      }
    }
 else {
      currentProvider=new ChartCubeFilterHandleProvider(new FilterHandleProvider());
    }
  }
 else {
    if (ChartReportItemUtil.isChildOfMultiViewsHandle((DesignElementHandle)handle)) {
      currentProvider=new ChartShareFiltersHandleProvider(baseProvider);
    }
 else {
      currentProvider=new ChartFilterHandleProvider(baseProvider);
    }
  }
  if (input != null) {
    currentProvider.setInput(input);
  }
  return currentProvider;
}