Program: 78681
Project: 78681
Buggy source:
/** 
 * Validates selection can be dragged, cut or copied
 * @param selection selected object, support single or multiple selection
 * @return if selection can be dragged, cut or copied
 */
public static boolean handleValidateDragInOutline(Object selection){
  if (selection instanceof StructuredSelection) {
    return handleValidateDragInOutline(((StructuredSelection)selection).toArray());
  }
  if (selection instanceof Object[]) {
    Object[] array=(Object[])selection;
    if (array.length == 0) {
      return false;
    }
    if (array[0] instanceof ColumnHandle) {
      boolean bool=false;
      int columnNumber=HandleAdapterFactory.getInstance().getColumnHandleAdapter(array[0]).getColumnNumber();
      Object parent=((ColumnHandle)array[0]).getContainer();
      if (parent instanceof TableHandle) {
        bool=((TableHandle)parent).canCopyColumn(columnNumber);
      }
 else       if (parent instanceof GridHandle) {
        bool=((GridHandle)parent).canCopyColumn(columnNumber);
      }
      if (bool && array.length == 1) {
        return true;
      }
      if (bool && array[1] instanceof CellHandle) {
        return true;
      }
      return false;
    }
    for (int i=0; i < array.length; i++) {
      if (checkContainerExists(array[i],array))       continue;
      if (!handleValidateDragInOutline(array[i]))       return false;
    }
    return true;
  }
  if (selection instanceof ReportElementModel) {
    return handleValidateDragInOutline(((ReportElementModel)selection).getSlotHandle());
  }
  if (selection instanceof SlotHandle) {
    SlotHandle slot=(SlotHandle)selection;
    DesignElementHandle handle=slot.getElementHandle();
    return slot.getContents().size() > 0 && (handle instanceof ListHandle || handle instanceof ListGroupHandle);
  }
  if (selection instanceof ColumnHandle) {
    int columnNumber=HandleAdapterFactory.getInstance().getColumnHandleAdapter(selection).getColumnNumber();
    Object parent=((ColumnHandle)selection).getContainer();
    if (parent instanceof TableHandle) {
      return ((TableHandle)parent).canCopyColumn(columnNumber);
    }
 else     if (parent instanceof GridHandle) {
      return ((GridHandle)parent).canCopyColumn(columnNumber);
    }
  }
  return selection instanceof ReportItemHandle || selection instanceof DataSetHandle || selection instanceof DataSourceHandle|| selection instanceof ScalarParameterHandle|| selection instanceof ParameterGroupHandle|| selection instanceof GroupHandle|| selection instanceof StyleHandle|| selection instanceof ThemeHandle|| selection instanceof EmbeddedImageHandle|| selection instanceof TemplateElementHandle;
}

Fixed version (ground truth):
/** 
 * Validates selection can be dragged, cut or copied
 * @param selection selected object, support single or multiple selection
 * @return if selection can be dragged, cut or copied
 */
public static boolean handleValidateDragInOutline(Object selection){
  if (selection instanceof StructuredSelection) {
    return handleValidateDragInOutline(((StructuredSelection)selection).toArray());
  }
  if (selection instanceof Object[]) {
    Object[] array=(Object[])selection;
    if (array.length == 0) {
      return false;
    }
    if (array[0] instanceof ColumnHandle) {
      boolean bool=false;
      int columnNumber=HandleAdapterFactory.getInstance().getColumnHandleAdapter(array[0]).getColumnNumber();
      Object parent=((ColumnHandle)array[0]).getContainer();
      if (parent instanceof TableHandle) {
        bool=((TableHandle)parent).canCopyColumn(columnNumber);
      }
 else       if (parent instanceof GridHandle) {
        bool=((GridHandle)parent).canCopyColumn(columnNumber);
      }
      if (bool && array.length == 1) {
        return true;
      }
      if (bool && array[1] instanceof CellHandle) {
        return true;
      }
      return false;
    }
    for (int i=0; i < array.length; i++) {
      if (checkContainerExists(array[i],array))       continue;
      if (!handleValidateDragInOutline(array[i]))       return false;
    }
    return true;
  }
  if (selection instanceof ReportElementModel) {
    return handleValidateDragInOutline(((ReportElementModel)selection).getSlotHandle());
  }
  if (selection instanceof SlotHandle) {
    SlotHandle slot=(SlotHandle)selection;
    DesignElementHandle handle=slot.getElementHandle();
    return slot.getContents().size() > 0 && (handle instanceof ListHandle || handle instanceof ListGroupHandle);
  }
  if (selection instanceof ColumnHandle) {
    int columnNumber=HandleAdapterFactory.getInstance().getColumnHandleAdapter(selection).getColumnNumber();
    Object parent=((ColumnHandle)selection).getContainer();
    if (parent instanceof TableHandle) {
      return ((TableHandle)parent).canCopyColumn(columnNumber);
    }
 else     if (parent instanceof GridHandle) {
      return ((GridHandle)parent).canCopyColumn(columnNumber);
    }
  }
  return selection instanceof ReportItemHandle || selection instanceof DataSetHandle || selection instanceof DataSourceHandle|| selection instanceof ScalarParameterHandle|| selection instanceof ParameterGroupHandle|| selection instanceof GroupHandle|| selection instanceof StyleHandle|| selection instanceof ThemeHandle|| selection instanceof EmbeddedImageHandle|| selection instanceof TemplateElementHandle|| selection instanceof DataSetItemModel;
}