@Override
  public boolean canExecute() {
    if (myTarget == null) {
      return false;
    }
    if (myContext.isMove() && myTarget != myContainer) {
      if (myComponents.contains(myTarget)) {
        return false;
      }

      Object[] children = getChildren();
      int index = ArrayUtil.indexOf(children, myTarget) + (myInsertBefore ? -1 : 1);
      if (0 <= index && index < children.length) {
        return !myComponents.contains(children[index]);
      }
    }
    return true;
  }
@Override
  public boolean canExecute()