@Override
    @SuppressWarnings({"unchecked"})
    public void publishFinishEvent(TimeCounterEvent event) {
        publishTimeEvent(event, metricsLifeListener -> metricsLifeListener.onEventFinish(event));
    }
@Test
    void testPublishFinishEvent() {

        // do nothing with no MetricsLifeListener
        eventMulticaster.publishFinishEvent(requestEvent);
        Assertions.assertSame(obj, objects[0]);

        // do onEventFinish with MetricsLifeListener
        eventMulticaster.addListener((new MetricsLifeListener<TimeCounterEvent>() {

            @Override
            public boolean isSupport(MetricsEvent event) {
                return event instanceof TimeCounterEvent;
            }

            @Override
            public void onEvent(TimeCounterEvent event) {}

            @Override
            public void onEventFinish(TimeCounterEvent event) {
                objects[0] = new Object();
            }

            @Override
            public void onEventError(TimeCounterEvent event) {}
        }));
        eventMulticaster.publishFinishEvent(requestEvent);
        Assertions.assertNotSame(obj, objects[0]);
    }