@AroundInvoke
    public Object detectSmoke(InvocationContext ic) throws Exception {
        long start = System.currentTimeMillis();
        try {
            return ic.proceed();
        } catch (Exception e) {
            events.fire(e);
            throw e;
        } finally {
            long duration = System.currentTimeMillis() - start;
            sensor.reportCall("Method: " + ic.getMethod() + " took: " + duration + " ms");
        }
    }