anchor.diff:      Result.Connection := Connection;
       Result.Transaction := ATransaction;
       Result.SQL.Text := ASQL;
  -    InjectMacroValues(Result.Command);
  -    InjectParamValues(Result.Command);
  +    InjectMacroAndParamValues(Result.Command);
       if AContextOwned then
         Activation.AddToContext(Result);
     except
  
positive.code:     class function GetContextValue(const AName: string; const AActivation: IMARSActivation;
        const ADesiredType: TFieldType = ftUnknown): TValue; virtual;
  
      procedure InjectParamValues(const ACommand: TFDCustomCommand); virtual;
      procedure InjectMacroValues(const ACommand: TFDCustomCommand); virtual;
  
      constructor Create(const AConnectionDefName: string;
        const AActivation: IMARSActivation = nil); virtual;
  
negative.code:       LCustomProvider(AActivation, AName, ADesiredType, Result);
  end;
  
  procedure TMARSFireDAC.InjectMacroAndParamValues(
    const ACommand: TFDCustomCommand; const AOnlyIfEmpty: Boolean);
  begin
    InjectMacroValues(ACommand, AOnlyIfEmpty);
    InjectParamValues(ACommand, AOnlyIfEmpty);
  end;
  
  procedure TMARSFireDAC.InjectMacroValues(const ACommand: TFDCustomCommand; const AOnlyIfEmpty: Boolean);
  var
    LIndex: Integer;
    LMacro: TFDMacro;
  