class DefaultPayloadParserBuilder implements PayloadParserBuilder, BeanPostProcessor {

    private final Map<PayloadParserType, PayloadParserBuilderStrategy> strategyMap = new ConcurrentHashMap<>();

    public DefaultPayloadParserBuilder(){
        register(new FixLengthPayloadParserBuilder());
        register(new DelimitedPayloadParserBuilder());
        register(new ScriptPayloadParserBuilder());
        register(new DirectPayloadParserBuilder());
        register(new LengthFieldPayloadParserBuilder());
    }
    @Override
    public Supplier<PayloadParser> build(PayloadParserType type, ValueObject configuration) {

        return Optional.ofNullable(strategyMap.get(type))
                .map(builder -> builder.buildLazy(configuration))
                .orElseThrow(() -> new UnsupportedOperationException("unsupported parser:" + type));
    }

    public void register(PayloadParserBuilderStrategy strategy) {
        strategyMap.put(strategy.getType(), strategy);
    }

    @Override
    public Object postProcessAfterInitialization(@Nonnull Object bean,@Nonnull String beanName) throws BeansException {<FILL_FUNCTION_BODY>}
}

        if (bean instanceof PayloadParserBuilderStrategy) {
            register(((PayloadParserBuilderStrategy) bean));
        }
        return bean;
    
<no_super_class>