/**
   * Performs the drop when the selection is a collection of IExpressions. Moves the given
   * expressions from their original locations to the location of the current target.
   *
   * @param selection the dragged selection
   * @return whether the drop could be completed
   */
  private boolean performExpressionDrop(IStructuredSelection selection) {
    IExpression targetExpression = getTargetExpression(getCurrentTarget());
    if (targetExpression != null) {
      IExpression[] expressions = new IExpression[selection.size()];
      Object[] selectionElements = selection.toArray();
      for (int i = 0; i < selectionElements.length; i++) {
        expressions[i] = getTargetExpression(selectionElements[i]);
      }

      IExpressionManager manager = DebugPlugin.getDefault().getExpressionManager();
      if (manager instanceof ExpressionManager) {
        ((ExpressionManager) manager).moveExpressions(expressions, targetExpression, fInsertBefore);
      }
      return true;
    }
    return false;
  }