@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 doAfterLowVersion() throws Exception {
        // low version test
        final SpringFactoriesInterceptor lowVersionInterceptor = new SpringFactoriesInterceptor();
        hasMethodLoadSpringFactoriesFiled.set(lowVersionInterceptor, Boolean.FALSE);
        ExecuteContext executeContext = ExecuteContext.forMemberMethod(this, String.class.getMethod("trim"),
                new Object[]{EnableAutoConfiguration.class
                }, null, null);
        final List<String> lowResult = new ArrayList<>();
        executeContext.changeResult(lowResult);
        executeContext = lowVersionInterceptor.after(executeContext);
        executeContext.changeArgs(new Object[]{BootstrapConfiguration.class});
        executeContext = lowVersionInterceptor.after(executeContext);
        final List<String> injectResult = (List<String>) executeContext.getResult();
        Assert.assertTrue(injectResult.contains(RESPONSE_CLASS) && injectResult.contains(RETRY_RESPONSE_CLASS));
    }