public void MergeFrom(DeviceAttributes other) {
   if (other == null) {
     return;
   }
   if (other.Name.Length != 0) {
     Name = other.Name;
   }
   if (other.DeviceType.Length != 0) {
     DeviceType = other.DeviceType;
   }
   if (other.MemoryLimit != 0L) {
     MemoryLimit = other.MemoryLimit;
   }
   if (other.locality_ != null) {
     if (locality_ == null) {
       locality_ = new global::Vision.Tensorflow.Proto.DeviceLocality();
     }
     Locality.MergeFrom(other.Locality);
   }
   if (other.Incarnation != 0UL) {
     Incarnation = other.Incarnation;
   }
   if (other.PhysicalDeviceDesc.Length != 0) {
     PhysicalDeviceDesc = other.PhysicalDeviceDesc;
   }
 }
 public void MergeFrom(pb::CodedInputStream input) {
   uint tag;
   while ((tag = input.ReadTag()) != 0) {
     switch(tag) {
       default:
         input.SkipLastField();
         break;
       case 10: {
         Name = input.ReadString();
         break;
       }
       case 18: {
         DeviceType = input.ReadString();
         break;
       }
       case 32: {
         MemoryLimit = input.ReadInt64();
         break;
       }
       case 42: {
         if (locality_ == null) {
           locality_ = new global::Vision.Tensorflow.Proto.DeviceLocality();
         }
         input.ReadMessage(locality_);
         break;
       }
       case 49: {
         Incarnation = input.ReadFixed64();
         break;
       }
       case 58: {
         PhysicalDeviceDesc = input.ReadString();
         break;
       }
     }
   }
 }