public static IDisposable ReportMetrics([NotNull] this GarbageCollectionMonitor monitor, [NotNull] IMetricContext metricContext, [CanBeNull] TimeSpan?period)
 => monitor.Subscribe(new ReportingObserver(metricContext, period));
 public static IDisposable LogCollections([NotNull] this GarbageCollectionMonitor monitor, [NotNull] ILog log, [CanBeNull] Predicate <GarbageCollectionInfo> filter)
 => monitor.Subscribe(new LoggingObserver(log, filter));
 public static IDisposable ReportMetrics([NotNull] this GarbageCollectionMonitor monitor, [NotNull] IMetricContext metricContext)
 => monitor.Subscribe(new ReportingObserver(metricContext));