anchor.diff:  
       procedure AddToContext(AValue: TValue); virtual;
   
  -
       procedure Prepare; virtual;
       procedure Invoke; virtual;
   
  
positive.code:       end;
      end;
    finally
      FreeContext;
  
      if not FMethod.HasAttribute<IsReference>(nil) then
        CleanupGarbage(LMethodResult);
    end;
  end;
  
  
negative.code: end;
  
  procedure TMARSActivationRecord.FreeContext;
  var
    LDestroyed: TList<TObject>;
    LValue: TValue;
  begin
    LDestroyed := TList<TObject>.Create;
    try
      while FContext.Count > 0 do
      begin
        LValue := FContext[0];
        if LValue.IsObject then
        begin
          if not LDestroyed.Contains(LValue.AsObject) then
          begin
            LDestroyed.Add(LValue.AsObject);
            CleanupGarbage(LValue);
          end;
        end
        else
          CleanupGarbage(LValue);
        FContext.Delete(0);
      end;
    finally
      LDestroyed.Free;
    end;
  end;
  
  