class ViewComponent::Compiler

def compile(raise_errors: false, force: false)

def compile(raise_errors: false, force: false)
  return if compiled? && !force
  return if @component == ViewComponent::Base
  gather_templates
  if self.class.development_mode && @templates.any?(&:requires_compiled_superclass?)
    @component.superclass.compile(raise_errors: raise_errors)
  end
  if template_errors.present?
    raise TemplateError.new(template_errors) if raise_errors
    # this return is load bearing, and prevents the component from being considered "compiled?"
    return false
  end
  if raise_errors
    @component.validate_initialization_parameters!
    @component.validate_collection_parameter!
  end
  define_render_template_for
  @component.register_default_slots
  @component.build_i18n_backend
  CompileCache.register(@component)
end