@Override
  public List<TemplateHandler> getPortletDisplayTemplateHandlers() {
    List<TemplateHandler> templateHandlers = TemplateHandlerRegistryUtil.getTemplateHandlers();

    List<TemplateHandler> portletDisplayTemplateHandlers = new ArrayList<>();

    for (TemplateHandler templateHandler : templateHandlers) {
      if (templateHandler instanceof BasePortletDisplayTemplateHandler) {
        portletDisplayTemplateHandlers.add(templateHandler);
      } else if (ProxyUtil.isProxyClass(templateHandler.getClass())) {
        InvocationHandler invocationHandler = ProxyUtil.getInvocationHandler(templateHandler);

        if (invocationHandler instanceof ClassLoaderBeanHandler) {
          ClassLoaderBeanHandler classLoaderBeanHandler =
              (ClassLoaderBeanHandler) invocationHandler;

          Object bean = classLoaderBeanHandler.getBean();

          if (bean instanceof BasePortletDisplayTemplateHandler) {
            portletDisplayTemplateHandlers.add(templateHandler);
          }
        }
      }
    }

    return portletDisplayTemplateHandlers;
  }