anchor.diff:  begin
     Result :=
       Assigned(control) and
  -    (control is TWinControl) and
  +    (control is TWinControl);
  +  if not Result then
  +    Exit;
  +
  +  if control.ClassName <> 'TframeCEFHost' then
  +    control := TWinControl(control).Owner;
  +
  +  Result := Assigned(control) and
  +    (control.ClassName = 'TframeCEFHost') and
       Assigned(TControl(control).Owner) and
  -    (TControl(control).Owner.ClassName = 'TframeCEFHost') and
  -    Assigned(TControl(control).Owner.Owner) and
  -    Supports(TControl(control).Owner.Owner, IKMDTextEditorActions);
  +    Supports(TControl(control).Owner, IKMDTextEditorActions);
   end;
   
   function GetTextEditorController(control: TObject): IKMDTextEditorActions;
  
positive.code: function TKMDEditAction.GetInterface(Target: TObject): IKMDEditActions;
  begin
    if IsTextEditor(Target) then
      Result := TControl(Target).Owner.Owner as IKMDEditActions
    else if not Supports(TWinControl(Target), IKMDEditActions, Result) then
      if not Supports(TWinControl(Target).Owner, IKMDEditActions, Result) then
        raise Exception.Create('Unable to get interface for edit actions');
  
negative.code:   if not IsTextEditor(control) then
      Exit(nil);
  
    if control.ClassName <> 'TframeCEFHost' then
      control := TWinControl(control).Owner;
  
    Result := TControl(control).Owner as IKMDTextEditorActions;
  end;
  
  function GetEditController(control: TObject): IKMDEditActions;
  begin
    if not IsTextEditor(control) then
      Exit(nil);
  
    if control.ClassName <> 'TframeCEFHost' then
      control := TWinControl(control).Owner;
  
    Result := TControl(control).Owner as IKMDEditActions;
  end;
  
  { TKMDEditAction }
  