class ReplicationControllerRollingUpdater extends RollingUpdater<ReplicationController, ReplicationControllerList> {

  ReplicationControllerRollingUpdater(Client client, String namespace, long rollingTimeoutMillis, long loggingIntervalMillis) {
    super(client, namespace, rollingTimeoutMillis, loggingIntervalMillis);
  }

  @Override
  protected ReplicationController createClone(ReplicationController obj, String newName, String newDeploymentHash) {<FILL_FUNCTION_BODY>}

  @Override
  protected FilterWatchListDeletable<Pod, PodList, PodResource> selectedPodLister(ReplicationController obj) {
    return pods().inNamespace(namespace).withLabels(obj.getSpec().getSelector());
  }

  @Override
  protected ReplicationController updateDeploymentKey(String name, String hash) {
    ReplicationController old = resources().inNamespace(namespace).withName(name).get();
    ReplicationController updated = new ReplicationControllerBuilder(old).editSpec()
        .addToSelector(DEPLOYMENT_KEY, hash)
        .editTemplate().editMetadata().addToLabels(DEPLOYMENT_KEY, hash).endMetadata().endTemplate()
        .endSpec()
        .build();
    return resources().inNamespace(namespace).withName(name).replace(updated);
  }

  @Override
  protected ReplicationController removeDeploymentKey(String name) {
    ReplicationController old = resources().inNamespace(namespace).withName(name).get();
    ReplicationController updated = new ReplicationControllerBuilder(old).editSpec()
        .removeFromSelector(DEPLOYMENT_KEY)
        .editTemplate().editMetadata().removeFromLabels(DEPLOYMENT_KEY).endMetadata().endTemplate()
        .endSpec()
        .build();
    return resources().inNamespace(namespace).withName(name).replace(updated);
  }

  @Override
  protected int getReplicas(ReplicationController obj) {
    return obj.getSpec().getReplicas();
  }

  @Override
  protected ReplicationController setReplicas(ReplicationController obj, int replicas) {
    return new ReplicationControllerBuilder(obj).editSpec().withReplicas(replicas).endSpec().build();
  }

  @Override
  protected MixedOperation<ReplicationController, ReplicationControllerList, RollableScalableResource<ReplicationController>> resources() {
    return new ReplicationControllerOperationsImpl(this.client);
  }
}

    return new ReplicationControllerBuilder(obj)
        .editMetadata()
        .withResourceVersion(null)
        .withName(newName)
        .endMetadata()
        .editSpec()
        .withReplicas(0).addToSelector(DEPLOYMENT_KEY, newDeploymentHash)
        .editTemplate().editMetadata().addToLabels(DEPLOYMENT_KEY, newDeploymentHash).endMetadata().endTemplate()
        .endSpec()
        .build();
  
<methods>public static T pause(RollableScalableResourceOperation<T,?,?>) ,public static Map<java.lang.String,java.lang.Object> requestPayLoadForRolloutPause() ,public static Map<java.lang.String,java.lang.Object> requestPayLoadForRolloutRestart() ,public static Map<java.lang.String,java.lang.Object> requestPayLoadForRolloutResume() ,public static T restart(RollableScalableResourceOperation<T,?,?>) ,public static T resume(RollableScalableResourceOperation<T,?,?>) ,public ReplicationController rollUpdate(ReplicationController, ReplicationController) <variables>private static final java.lang.Long DEFAULT_SERVER_GC_WAIT_TIMEOUT,public static final java.lang.String DEPLOYMENT_KEY,private static final transient Logger LOG,protected final non-sealed io.fabric8.kubernetes.client.Client client,private final non-sealed long loggingIntervalMillis,protected final non-sealed java.lang.String namespace,private final non-sealed long rollingTimeoutMillis