class ExtensibleResourceAdapter<T> extends ResourceAdapter<T> implements ExtensibleResource<T> {

  protected ExtensibleResource<T> resource;
  protected Client client;

  public ExtensibleResourceAdapter() {

  }

  public abstract ExtensibleResourceAdapter<T> newInstance();

  public ExtensibleResourceAdapter<T> init(ExtensibleResource<T> resource, Client client) {<FILL_FUNCTION_BODY>}

  @Override
  public ExtensibleResource<T> lockResourceVersion(String resourceVersion) {
    return newInstance().init(resource.lockResourceVersion(resourceVersion), client);
  }

  @Override
  public ExtensibleResource<T> withResourceVersion(String resourceVersion) {
    return newInstance().init(resource.withResourceVersion(resourceVersion), client);
  }

  @Override
  public ExtensibleResource<T> fromServer() {
    return newInstance().init(resource.fromServer(), client);
  }

  @Override
  public ExtensibleResource<T> withGracePeriod(long gracePeriodSeconds) {
    return newInstance().init(resource.withGracePeriod(gracePeriodSeconds), client);
  }

  @Override
  public ExtensibleResource<T> withPropagationPolicy(DeletionPropagation propagationPolicy) {
    return newInstance().init(resource.withPropagationPolicy(propagationPolicy), client);
  }

  @Override
  public ExtensibleResource<T> withIndexers(Map<String, Function<T, List<String>>> indexers) {
    return newInstance().init(resource.withIndexers(indexers), client);
  }

  @Override
  public ExtensibleResource<T> dryRun(boolean isDryRun) {
    return newInstance().init(resource.dryRun(isDryRun), client);
  }

  @Override
  public ExtensibleResource<T> withLimit(Long limit) {
    return newInstance().init(resource.withLimit(limit), client);
  }

  @Override
  public <C extends Client> C inWriteContext(Class<C> clazz) {
    return resource.inWriteContext(clazz);
  }

  @Override
  public ExtensibleResource<T> lockResourceVersion() {
    return newInstance().init(resource.lockResourceVersion(), client);
  }

  @Override
  public T getItem() {
    return resource.getItem();
  }

  @Override
  public ExtensibleResource<T> fieldValidation(Validation fieldValidation) {
    return newInstance().init(resource.fieldValidation(fieldValidation), client);
  }

  @Override
  public ExtensibleResource<T> fieldManager(String manager) {
    return newInstance().init(resource.fieldManager(manager), client);
  }

  @Override
  public ExtensibleResource<T> forceConflicts() {
    return newInstance().init(resource.forceConflicts(), client);
  }

  @Override
  public ExtensibleResource<T> withTimeout(long timeout, TimeUnit unit) {
    return newInstance().init(resource.withTimeout(timeout, unit), client);
  }

  @Override
  public ExtensibleResource<T> withTimeoutInMillis(long timeoutInMillis) {
    return withTimeout(timeoutInMillis, TimeUnit.MILLISECONDS);
  }

  @Override
  public ExtensibleResource<T> unlock() {
    return newInstance().init(resource.unlock(), client);
  }

  @Override
  public ExtensibleResource<T> subresource(String subresource) {
    return newInstance().init(resource.subresource(subresource), client);
  }

}

    super.resource = resource;
    this.resource = resource;
    this.client = client;
    return this;
  
<methods>public void <init>() ,public void <init>(Resource<T>) ,public T accept(Consumer<T>) ,public T create() ,public T create(T) ,public T createOr(Function<NonDeletingOperation<T>,T>) ,public T createOrReplace() ,public T createOrReplace(T) ,public List<StatusDetails> delete() ,public List<StatusDetails> delete(T) ,public WritableOperation<T> dryRun() ,public WritableOperation<T> dryRun(boolean) ,public T edit(UnaryOperator<T>) ,public transient T edit(Visitor[]) ,public T edit(Class<V>, Visitor<V>) ,public T editStatus(UnaryOperator<T>) ,public ServerSideApplicable<T> fieldManager(java.lang.String) ,public NonDeletingOperation<T> fieldValidation(io.fabric8.kubernetes.client.dsl.FieldValidateable.Validation) ,public ServerSideApplicable<T> forceConflicts() ,public Gettable<T> fromServer() ,public T get() ,public Resource<T> getResource() ,public SharedIndexInformer<T> inform() ,public SharedIndexInformer<T> inform(ResourceEventHandler<? super T>) ,public SharedIndexInformer<T> inform(ResourceEventHandler<? super T>, long) ,public CompletableFuture<List<T>> informOnCondition(Predicate<List<T>>) ,public boolean isReady() ,public T item() ,public ReplaceDeletable<T> lockResourceVersion(java.lang.String) ,public ReplaceDeletable<T> lockResourceVersion() ,public T patch(T) ,public T patch(io.fabric8.kubernetes.client.dsl.base.PatchContext, T) ,public T patch(java.lang.String) ,public T patch(io.fabric8.kubernetes.client.dsl.base.PatchContext, java.lang.String) ,public T patch() ,public T patch(io.fabric8.kubernetes.client.dsl.base.PatchContext) ,public T patchStatus(T) ,public T patchStatus() ,public T replace() ,public T replace(T) ,public T replaceStatus() ,public T replaceStatus(T) ,public T require() throws io.fabric8.kubernetes.client.ResourceNotFoundException,public SharedIndexInformer<T> runnableInformer(long) ,public Scale scale() ,public T scale(int) ,public T scale(int, boolean) ,public Scale scale(Scale) ,public T serverSideApply() ,public EditReplacePatchable<T> subresource(java.lang.String) ,public NonDeletingOperation<T> unlock() ,public T update() ,public T updateStatus(T) ,public T updateStatus() ,public T waitUntilCondition(Predicate<T>, long, java.util.concurrent.TimeUnit) ,public T waitUntilReady(long, java.util.concurrent.TimeUnit) ,public io.fabric8.kubernetes.client.Watch watch(Watcher<T>) ,public io.fabric8.kubernetes.client.Watch watch(ListOptions, Watcher<T>) ,public io.fabric8.kubernetes.client.Watch watch(java.lang.String, Watcher<T>) ,public PropagationPolicyConfigurable<? extends io.fabric8.kubernetes.client.dsl.Deletable> withGracePeriod(long) ,public Informable<T> withIndexers(Map<java.lang.String,Function<T,List<java.lang.String>>>) ,public Informable<T> withLimit(java.lang.Long) ,public GracePeriodConfigurable<? extends io.fabric8.kubernetes.client.dsl.Deletable> withPropagationPolicy(io.fabric8.kubernetes.api.model.DeletionPropagation) ,public Watchable<T> withResourceVersion(java.lang.String) ,public io.fabric8.kubernetes.client.dsl.Deletable withTimeout(long, java.util.concurrent.TimeUnit) ,public io.fabric8.kubernetes.client.dsl.Deletable withTimeoutInMillis(long) <variables>Resource<T> resource