anchor.diff:  function TKMDEditAction.GetInterface(Target: TObject): IKMDEditActions;
   begin
     if IsTextEditor(Target) then
  -    Result := TControl(Target).Owner.Owner as IKMDEditActions
  +    Result := GetEditController(Target)
     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');
  
positive.code: begin
    Result :=
      Assigned(control) and
      (control is TWinControl) and
      Assigned(TControl(control).Owner) and
      (TControl(control).Owner.ClassName = 'TframeCEFHost') and
      Assigned(TControl(control).Owner.Owner) and
      Supports(TControl(control).Owner.Owner, IKMDTextEditorActions);
  end;
  
  function GetTextEditorController(control: TObject): IKMDTextEditorActions;
  
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 }
  