anchor.diff:  
   interface
   
  -uses Classes,Plugin, NovusPlugin, NovusVersionUtils, Project,
  -    Output, SysUtils, System.Generics.Defaults,  runtime, Config,
  -    APIBase, NovusGUIDEx, CodeGeneratorItem, FunctionsParser, ProjectItem,
  -    Variables, NovusFileUtils, CodeGenerator, JSONFunctionParser, TokenParser,
  -    NovusJSONUtils, System.IOUtils, System.JSON, TokenProcessor;
  -
  +uses Classes, Plugin, NovusPlugin, NovusVersionUtils, Project,
  +  Output, SysUtils, System.Generics.Defaults, runtime, Config,
  +  APIBase, NovusGUIDEx, CodeGeneratorItem, FunctionsParser, ProjectItem,
  +  Variables, NovusFileUtils, CodeGenerator, JSONFunctionParser, TokenParser,
  +  NovusJSONUtils, System.IOUtils, System.JSON, TokenProcessor;
   
   type
     TJSONTag = class
     private
  -     foOutput: tOutput;
  -     foProjectItem: tProjectItem;
  -     foVariables: TVariables;
  -  protected
  -     function GetTagName: String; virtual;
  -  public
  -     constructor Create(aOutput: tOutput);
  -
  -     function GetJSONObjectVariable(aToken: string): TVariable;
  -
  -     function Execute(aProjectItem: TProjectItem;aTagName: string;aTokens: tTokenProcessor): String; virtual;
  -
  -     property TagName: String
  -       read GetTagName;
  -
  -     property oOutput: tOutput
  -       read foOutput;
  -
  -     property oVariables: TVariables
  -        read foVariables
  -        write foVariables;
  +    foOutput: tOutput;
  +    foProjectItem: tProjectItem;
  +    foVariables: TVariables;
  +  protected
  +    function GetTagName: String; virtual;
  +  public
  +    constructor Create(aOutput: tOutput);
  +
  +    function GetJSONObjectVariable(aToken: string): TVariable;
  +
  +    function Execute(aProjectItem: tProjectItem; aTagName: string;
  +      aTokens: tTokenProcessor): String; virtual;
  +
  +    property TagName: String read GetTagName;
  +
  +    property oOutput: tOutput read foOutput;
  +
  +    property oVariables: TVariables read foVariables write foVariables;
     end;
   
     TJSONTag_LoadJSON = class(TJSONTag)
     private
     protected
       function GetTagName: String; override;
  -    procedure OnExecute(var aToken: String; aTokenParser: tTokenParser; aJSONFilename: String);
  -  public
  -    function Execute(aProjectItem: TProjectItem;aTagName: string;aTokens: tTokenProcessor): String; override;
  +    procedure OnExecute(var aToken: String; aTokenParser: tTokenParser;
  +      aJSONFilename: String);
  +  public
  +    function Execute(aProjectItem: tProjectItem; aTagName: string;
  +      aTokens: tTokenProcessor): String; override;
     end;
   
     TJSONTag_JSONQuery = class(TJSONTag)
  
positive.code: 
    liIndex := IsTagExists(aTagName);
    if liIndex = -1 then
     begin
       oOutput.LogError('Cannot find JOSN.' + aTagname);
  
       Exit;
     end;
    
    Result := FJSONTags[liIndex].Execute((aProjectItem as tProjectItem), aTagName,aTokens);
  end;
  
  function tPlugin_JSONTagsBase.IsTagExists(aTagName: String): Integer;
  
negative.code:   I: Integer;
  begin
    Result := -1;
    if aTagName = '' then
      Exit;
  
    for I := 0 to Length(FJSONTags) - 1 do
    begin
      if Uppercase(Trim(aTagName)) = Uppercase(Trim(FJSONTags[I].TagName)) then
      begin
        Result := I;
  
        Break;
      end;
    end;
  end;
  
  function GetPluginObject: INovusPlugin;
  begin
    if (_Plugin_JSONTags = nil) then
      _Plugin_JSONTags := TPlugin_JSONTags.Create;
    Result := _Plugin_JSONTags;
  end;
  
  constructor TJSONTag.Create(aOutput: tOutput);
  begin
    foOutput := aOutput;
  end;
  
  function TJSONTag.GetTagName: String;
  