code: @SuppressWarnings("WeakerAccess")
    public ApiFuture<AppProfile> updateAppProfileAsync(UpdateAppProfileRequest request) {
      return ApiFutures.transform(
          stub.updateAppProfileOperationCallable().futureCall(request.toProto(projectId)),
          new ApiFunction<com.google.bigtable.admin.v2.AppProfile, AppProfile>() {
            @Override
            public AppProfile apply(com.google.bigtable.admin.v2.AppProfile proto) {
              return AppProfile.fromProto(proto);
            }
          },
          MoreExecutors.directExecutor());
    }
docs: Asynchronously updates an existing app profile.
  
  <p>Sample code:
  
  <pre>{@code
  ApiFuture<AppProfile> existingAppProfileFuture = client.getAppProfileAsync("my-instance", "my-app-profile");
  
  ApiFuture<AppProfile> updatedAppProfileFuture = ApiFutures.transformAsync(
  existingAppProfileFuture,
  new ApiAsyncFunction<AppProfile, AppProfile>() {
  public ApiFuture<AppProfile> apply(AppProfile existingAppProfile) {
  return client.updateAppProfileAsync(
  UpdateAppProfileRequest.of(existingAppProfile)
  .setRoutingPolicy(SingleClusterRoutingPolicy.of("my-other-cluster"))
  );
  }
  },
  MoreExecutors.directExecutor()
  );
  
  ApiFuture<AppProfile> appProfile = updatedAppProfileFuture.get();
  }</pre>
  
  @see UpdateAppProfileRequest