| 
					
				 | 
			
			
				@@ -201,7 +201,7 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     channel_control_helper()->UpdateState( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         GRPC_CHANNEL_TRANSIENT_FAILURE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        UniquePtr<SubchannelPicker>(New<TransientFailurePicker>(error))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MakeUnique<TransientFailurePicker>(error)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // If one of the subchannels in the new list is already in state 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -319,12 +319,11 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         p->channel_control_helper()->UpdateState( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             GRPC_CHANNEL_TRANSIENT_FAILURE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            UniquePtr<SubchannelPicker>(New<TransientFailurePicker>(error))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MakeUnique<TransientFailurePicker>(error)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         p->channel_control_helper()->UpdateState( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             GRPC_CHANNEL_CONNECTING, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            UniquePtr<SubchannelPicker>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                New<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MakeUnique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -339,20 +338,19 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         p->selected_ = nullptr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         p->subchannel_list_.reset(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         p->channel_control_helper()->UpdateState( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            GRPC_CHANNEL_IDLE, UniquePtr<SubchannelPicker>(New<QueuePicker>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                   p->Ref(DEBUG_LOCATION, "QueuePicker")))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GRPC_CHANNEL_IDLE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MakeUnique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // This is unlikely but can happen when a subchannel has been asked 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // to reconnect by a different channel and this channel has dropped 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // some connectivity state notifications. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (connectivity_state == GRPC_CHANNEL_READY) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           p->channel_control_helper()->UpdateState( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              GRPC_CHANNEL_READY, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              UniquePtr<SubchannelPicker>(New<Picker>(subchannel()->Ref()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              GRPC_CHANNEL_READY, MakeUnique<Picker>(subchannel()->Ref())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else {  // CONNECTING 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           p->channel_control_helper()->UpdateState( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              connectivity_state, UniquePtr<SubchannelPicker>(New<QueuePicker>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                      p->Ref(DEBUG_LOCATION, "QueuePicker")))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              connectivity_state, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              MakeUnique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -396,7 +394,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           p->channel_control_helper()->UpdateState( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               GRPC_CHANNEL_TRANSIENT_FAILURE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              UniquePtr<SubchannelPicker>(New<TransientFailurePicker>(error))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              MakeUnique<TransientFailurePicker>(error)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       sd->CheckConnectivityStateAndStartWatchingLocked(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -408,8 +406,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (subchannel_list() == p->subchannel_list_.get()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         p->channel_control_helper()->UpdateState( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             GRPC_CHANNEL_CONNECTING, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            UniquePtr<SubchannelPicker>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                New<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MakeUnique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -448,8 +445,7 @@ void PickFirst::PickFirstSubchannelData::ProcessUnselectedReadyLocked() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   p->selected_ = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   p->channel_control_helper()->UpdateState( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      GRPC_CHANNEL_READY, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      UniquePtr<SubchannelPicker>(New<Picker>(subchannel()->Ref()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      GRPC_CHANNEL_READY, MakeUnique<Picker>(subchannel()->Ref())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for (size_t i = 0; i < subchannel_list()->num_subchannels(); ++i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (i != Index()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       subchannel_list()->subchannel(i)->ShutdownLocked(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -488,7 +484,7 @@ class PickFirstFactory : public LoadBalancingPolicyFactory { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  public: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       LoadBalancingPolicy::Args args) const override { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return OrphanablePtr<LoadBalancingPolicy>(New<PickFirst>(std::move(args))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return MakeOrphanable<PickFirst>(std::move(args)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const char* name() const override { return kPickFirst; } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -510,8 +506,7 @@ class PickFirstFactory : public LoadBalancingPolicyFactory { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void grpc_lb_policy_pick_first_init() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   grpc_core::LoadBalancingPolicyRegistry::Builder:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       RegisterLoadBalancingPolicyFactory( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          grpc_core::UniquePtr<grpc_core::LoadBalancingPolicyFactory>( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              grpc_core::New<grpc_core::PickFirstFactory>())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          grpc_core::MakeUnique<grpc_core::PickFirstFactory>()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void grpc_lb_policy_pick_first_shutdown() {} 
			 |