anchor.diff:  begin
     GCallback(plsError, FJsonFile, Message, 0, 0);
     Result := False;
  +end;
  +
  +procedure TValidateKeyboardInfo.Info(message: string);
  +begin
  +  GCallback(plsInfo, FJsonFile, Message, 0, 0);
   end;
   
   function TValidateKeyboardInfo.LoadJsonFile: Boolean;
  
positive.code:     function LoadJsonFile: Boolean;
      constructor Create(AJsonFile: string; ASilent: Boolean);
      function Failed(message: string): Boolean;
    public
      class function Execute(JsonFile, JsonSchemaPath: string; FDistribution, FSilent: Boolean; FCallback: TProjectLogObjectEvent): Boolean;
    end;
  
negative.code:           Result := Failed(msg);
  
          if not TCanonicalLanguageCodeUtils.IsCanonical(Tag, msg, False, False) then
            Info(msg);
        finally
          Free;
        end;
  