class CustomResourceHandler extends AbstractCustomResourceHandler {
  public static final String VERSION = "v1beta1";

  public CustomResourceHandler(Resources resources, boolean parallel) {
    super(resources, parallel);
  }

  @Override
  protected Decorator<?> getPrinterColumnDecorator(
      String name, String version, String path, String type, String column,
      String description, String format, int priority) {
    return new AddAdditionPrinterColumnDecorator(name, version, type, column, path, format,
        description, priority);
  }

  @Override
  protected void addDecorators(CustomResourceInfo config, TypeDef def,
      Optional<String> specReplicasPath, Optional<String> statusReplicasPath,
      Optional<String> labelSelectorPath) {<FILL_FUNCTION_BODY>}

  @Override
  public void handle(CustomResourceInfo config) {
    super.handle(config);
  }
}

    final String name = config.crdName();
    final String version = config.version();
    resources.decorate(
        new AddCustomResourceDefinitionResourceDecorator(name, config.group(), config.kind(),
            config.scope().value(), config.shortNames(), config.plural(), config.singular(), config.annotations(),
            config.labels()));

    resources.decorate(new AddCustomResourceDefinitionVersionDecorator(name, version));

    resources.decorate(new AddSchemaToCustomResourceDefinitionVersionDecorator(name, version,
        JsonSchema.from(def, "kind", "apiVersion", "metadata")));

    specReplicasPath.ifPresent(path -> {
      resources.decorate(new AddSubresourcesDecorator(name, version));
      resources.decorate(new AddSpecReplicasPathDecorator(name, version, path));
    });

    statusReplicasPath.ifPresent(path -> {
      resources.decorate(new AddSubresourcesDecorator(name, version));
      resources.decorate(new AddStatusReplicasPathDecorator(name, version, path));
    });

    labelSelectorPath.ifPresent(path -> {
      resources.decorate(new AddSubresourcesDecorator(name, version));
      resources.decorate(new AddLabelSelectorPathDecorator(name, version, path));
    });

    if (config.statusClassName().isPresent()) {
      resources.decorate(new AddSubresourcesDecorator(name, version));
      resources.decorate(new AddStatusSubresourceDecorator(name, version));
    }

    resources.decorate(new SetServedVersionDecorator(name, version, config.served()));
    resources.decorate(new SetStorageVersionDecorator(name, version, config.storage()));
    resources.decorate(new SetDeprecatedVersionDecorator(name, version, config.deprecated(), config.deprecationWarning()));
    resources.decorate(new EnsureSingleStorageVersionDecorator(name));
    resources.decorate(new SortCustomResourceDefinitionVersionDecorator(name));
    resources.decorate(new PromoteSingleVersionAttributesDecorator(name));
    resources.decorate(new SortPrinterColumnsDecorator(name, version));
  
<methods>public void handle(io.fabric8.crd.generator.CustomResourceInfo) <variables>private final non-sealed boolean parallel,protected final non-sealed io.fabric8.crd.generator.Resources resources