class RequestMonitor {

	public SpanContextInformation monitor(MonitoredRequest monitoredRequest) throws Exception {
		if (corePlugin.isStagemonitorActive()) {
			final long start = System.nanoTime();
			final Span span = monitoredRequest.createSpan();
			final Scope scope = tracingPlugin.getTracer().scopeManager().activate(span);
			try {
				final SpanContextInformation info = getSpanContextInformation(start, span);
				monitoredRequest.execute();
				return info;
			} catch (Exception e) {
				recordException(e);
				throw e;
			} finally {
				monitorStop(scope, span);
			}
		}
		return null;
	}

	public  RequestMonitor(ConfigurationRegistry configuration, Metric2Registry registry);
	private  RequestMonitor(ConfigurationRegistry configuration, Metric2Registry registry, TracingPlugin tracingPlugin);

}