class ReplicationControllerOperationsImpl extends
    RollableScalableResourceOperation<ReplicationController, ReplicationControllerList, RollableScalableResource<ReplicationController>>
    implements TimeoutImageEditReplacePatchable<ReplicationController> {

  public ReplicationControllerOperationsImpl(Client client) {
    this(new PodOperationContext(), HasMetadataOperationsImpl.defaultContext(client));
  }

  public ReplicationControllerOperationsImpl(PodOperationContext context, OperationContext superContext) {
    super(context, superContext.withPlural("replicationcontrollers"), ReplicationController.class,
        ReplicationControllerList.class);
  }

  @Override
  public ReplicationControllerOperationsImpl newInstance(OperationContext context) {
    return new ReplicationControllerOperationsImpl(rollingOperationContext, context);
  }

  @Override
  public ReplicationControllerOperationsImpl newInstance(PodOperationContext context,
      OperationContext superContext) {
    return new ReplicationControllerOperationsImpl(context, superContext);
  }

  @Override
  public RollingUpdater<ReplicationController, ReplicationControllerList> getRollingUpdater(long rollingTimeout,
      TimeUnit rollingTimeUnit) {
    return new ReplicationControllerRollingUpdater(context.getClient(), namespace, rollingTimeUnit.toMillis(rollingTimeout),
        getRequestConfig().getLoggingInterval());
  }

  @Override
  public Status rollback(DeploymentRollback deploymentRollback) {
    throw new KubernetesClientException("rollback not supported in case of ReplicationControllers");
  }

  @Override
  public String getLog(boolean isPretty) {
    return PodOperationUtil.getLog(
        new ReplicationControllerOperationsImpl(rollingOperationContext.withPrettyOutput(isPretty), context).doGetLog(),
        isPretty);
  }

  private List<PodResource> doGetLog() {
    ReplicationController rc = requireFromServer();

    return PodOperationUtil.getPodOperationsForController(context,
        rollingOperationContext, rc.getMetadata().getUid(),
        getReplicationControllerPodLabels(rc));
  }

  /**
   * Returns an unclosed Reader. It's the caller responsibility to close it.
   *
   * @return Reader
   */
  @Override
  public Reader getLogReader() {
    return PodOperationUtil.getLogReader(doGetLog());
  }

  /**
   * Returns an unclosed InputStream. It's the caller responsibility to close it.
   *
   * @return InputStream
   */
  @Override
  public InputStream getLogInputStream() {
    return PodOperationUtil.getLogInputStream(doGetLog());
  }

  @Override
  public LogWatch watchLog(OutputStream out) {
    return PodOperationUtil.watchLog(doGetLog(), out);
  }

  static Map<String, String> getReplicationControllerPodLabels(ReplicationController replicationController) {<FILL_FUNCTION_BODY>}

  @Override
  protected List<Container> getContainers(ReplicationController value) {
    return value.getSpec().getTemplate().getSpec().getContainers();
  }

  @Override
  public TimeTailPrettyLoggable limitBytes(int limitBytes) {
    return new ReplicationControllerOperationsImpl(rollingOperationContext.withLimitBytes(limitBytes), context);
  }

  @Override
  public TimeTailPrettyLoggable terminated() {
    return new ReplicationControllerOperationsImpl(rollingOperationContext.withTerminatedStatus(true), context);
  }

  @Override
  public Loggable withPrettyOutput() {
    return new ReplicationControllerOperationsImpl(rollingOperationContext.withPrettyOutput(true), context);
  }

  @Override
  public PrettyLoggable tailingLines(int lines) {
    return new ReplicationControllerOperationsImpl(rollingOperationContext.withTailingLines(lines), context);
  }

  @Override
  public TailPrettyLoggable sinceTime(String timestamp) {
    return new ReplicationControllerOperationsImpl(rollingOperationContext.withSinceTimestamp(timestamp), context);
  }

  @Override
  public TailPrettyLoggable sinceSeconds(int seconds) {
    return new ReplicationControllerOperationsImpl(rollingOperationContext.withSinceSeconds(seconds), context);
  }

  @Override
  public BytesLimitTerminateTimeTailPrettyLoggable usingTimestamps() {
    return new ReplicationControllerOperationsImpl(rollingOperationContext.withTimestamps(true), context);
  }
}

    Map<String, String> labels = new HashMap<>();
    if (replicationController != null && replicationController.getSpec() != null
        && replicationController.getSpec().getSelector() != null) {
      labels.putAll(replicationController.getSpec().getSelector());
    }
    return labels;
  
<methods>public ReplicationController edit(UnaryOperator<ReplicationController>) ,public java.lang.String getLog() ,public io.fabric8.kubernetes.client.dsl.Loggable inContainer(java.lang.String) ,public abstract RollableScalableResourceOperation<ReplicationController,ReplicationControllerList,RollableScalableResource<ReplicationController>> newInstance(io.fabric8.kubernetes.client.dsl.internal.PodOperationContext, io.fabric8.kubernetes.client.dsl.internal.OperationContext) ,public ReplicationController pause() ,public ReplicationController restart() ,public ReplicationController resume() ,public TimeoutImageEditReplacePatchable<ReplicationController> rolling() ,public ReplicationController undo() ,public ReplicationController updateImage(java.lang.String) ,public ReplicationController updateImage(Map<java.lang.String,java.lang.String>) ,public io.fabric8.kubernetes.client.dsl.LogWatch watchLog() ,public io.fabric8.kubernetes.client.dsl.Loggable withLogWaitTimeout(java.lang.Integer) ,public io.fabric8.kubernetes.client.dsl.Loggable withReadyWaitTimeout(java.lang.Integer) ,public RollableScalableResourceOperation<ReplicationController,ReplicationControllerList,RollableScalableResource<ReplicationController>> withTimeout(long, java.util.concurrent.TimeUnit) ,public RollableScalableResourceOperation<ReplicationController,ReplicationControllerList,RollableScalableResource<ReplicationController>> withTimeoutInMillis(long) <variables>protected final non-sealed io.fabric8.kubernetes.client.dsl.internal.PodOperationContext rollingOperationContext