private void updateTargetUnderMouse() {
    if (myContext.getComponents().isEmpty()) {
      return;
    }

    final List<RadComponent> excludeComponents = new ArrayList<>(myContext.getComponents());
    if (!myContext.isCreate()) {
      for (RadComponent component : myContext.getComponents()) {
        component.accept(new RadComponentVisitor() {
          @Override
          public void endVisit(RadComponent component) {
            excludeComponents.add(component);
          }
        }, true);
      }
    }

    final EditOperation[] operation = new EditOperation[1];
    ComponentTargetFilter filter = new ComponentTargetFilter() {
      @Override
      public boolean preFilter(RadComponent component) {
        return myContext.isCreate() || !excludeComponents.contains(component);
      }

      @Override
      public boolean resultFilter(RadComponent target) {
        if (!myContext.isCreate()) {
          if (myContext.getComponents().get(0).getParent() == target) {
            myContext.setType(OperationContext.MOVE);
          }
          else {
            myContext.setType(OperationContext.ADD);
          }
        }

        if (myTarget == target) {
          return true;
        }

        RadLayout layout = target.getLayout();
        if (layout != null) {
          operation[0] = layout.processChildOperation(myContext);
        }

        return operation[0] != null;
      }
    };
    Point location = getLocation();
    RadComponent target = myArea.findTarget(location.x, location.y, filter);

    if (target != myTarget) {
      if (myTargetOperation != null) {
        eraseFeedback();
      }

      myTarget = target;
      myTargetOperation = operation[0];
    }

    if (target == null) {
      if (!myContext.isCreate()) {
        myContext.setType(null);
      }
    }
    else {
      myTargetOperation.setComponents(myContext.getComponents());
    }
  }
private void updateTargetUnderMouse()