@Override
    public ExecuteContext after(ExecuteContext context) throws Exception {
        if (isHasMethodLoadSpringFactories()) {
            // Only if use LoadSpringFactories for injection in the high version, it is more efficient to
            // have a cache in the high version and only need to inject once
            if (IS_INJECTED.compareAndSet(false, true)) {
                injectConfigurations(context.getResult());
            }
        } else {
            final Object rawFactoryType = context.getArguments()[0];
            if (rawFactoryType instanceof Class) {
                final Class<?> factoryType = (Class<?>) rawFactoryType;
                injectConfigurationsWithLowVersion(context.getResult(), factoryType.getName());
            }
        }
        return context;
    }
@Test
    public void doAfterHighVersion() throws Exception {
        final SpringFactoriesInterceptor interceptor = new SpringFactoriesInterceptor();
        hasMethodLoadSpringFactoriesFiled.set(interceptor, Boolean.TRUE);
        ExecuteContext executeContext = ExecuteContext.forMemberMethod(this, String.class.getMethod("trim"),
                null, null, null);
        // high version test
        final Map<String, List<String>> cache = new HashMap<>();
        cache.put(BOOTSTRAP_FACTORY_NAME, new ArrayList<>());
        cache.put(ENABLE_AUTO_CONFIGURATION_FACTORY_NAME, new ArrayList<>());
        executeContext.changeResult(cache);
        executeContext = interceptor.after(executeContext);
        final Map<String, List<String>> result = (Map<String, List<String>>) executeContext.getResult();
        Assert.assertTrue(result.get(BOOTSTRAP_FACTORY_NAME).contains(RESPONSE_CLASS)
                && result.get(ENABLE_AUTO_CONFIGURATION_FACTORY_NAME).contains(RETRY_RESPONSE_CLASS));
    }