public override void Destructure(
            Exception exception,
            IExceptionPropertiesBag propertiesBag,
            Func <Exception, IReadOnlyDictionary <string, object> > destructureException)
        {
            base.Destructure(exception, propertiesBag, destructureException);
            BenchmarkException benchmarkException = (BenchmarkException)exception;

            propertiesBag.AddProperty("ParamString", benchmarkException.ParamString);
            propertiesBag.AddProperty("ParamInt", benchmarkException.ParamInt);
            propertiesBag.AddProperty("Point", new Dictionary <string, object>
            {
                { "X", benchmarkException.Point.X },
                { "Y", benchmarkException.Point.Y }
            });
        }
 public void Setup()
 {
     try
     {
         throw new BenchmarkException()
               {
                   ParamInt    = 123,
                   ParamString = "some param value",
                   Point       = new Point()
                   {
                       X = 666, Y = 777
                   }
               };
     }
     catch (BenchmarkException ex)
     {
         this.benchmarkException = ex;
     }
 }