anchor.diff:  //Validates fText basing on predefined sets of allowed or disallowed chars
   //It iterates from end to start of a string - deletes chars and moves cursor appropriately
   procedure TKMEdit.ValidateText;
  -var I: Integer;
  +var
  +  I: Integer;
   begin
     //Parse whole text incase user placed it from clipboard
     //Validate contents
  
positive.code: 
  procedure TKMSelectableEdit.KeyPress(Key: Char);
  begin
    if ReadOnly or BlockInput then Exit;
  
    if HasSelection and IsCharValid(Key) then
  
negative.code:     procedure FocusChanged(aFocused: Boolean); override;
      function GetMaxLength: Word; virtual; abstract;
      function IsCharValid(aChar: WideChar): Boolean; virtual; abstract;
      procedure ValidateText; virtual;
      function KeyEventHandled(Key: Word; Shift: TShiftState): Boolean; virtual; abstract;
      procedure PaintSelection;
      function DrawEolSymbol: Boolean; virtual;
      function DoShowMarkup: Boolean; virtual;
  
      procedure Changed;
    public
      ReadOnly: Boolean;
      BlockInput: Boolean; // Blocks all input into the field, but allow focus, selection and copy selected text
  