public Builder mergeFrom(org.bwapi.proxy.messages.GameMessages.TechTypeData other) {
        if (other == org.bwapi.proxy.messages.GameMessages.TechTypeData.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000002;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasRace()) {
          setRace(other.getRace());
        }
        if (other.hasMineralPrice()) {
          setMineralPrice(other.getMineralPrice());
        }
        if (other.hasGasPrice()) {
          setGasPrice(other.getGasPrice());
        }
        if (other.hasResearchTime()) {
          setResearchTime(other.getResearchTime());
        }
        if (other.hasEnergyUsed()) {
          setEnergyUsed(other.getEnergyUsed());
        }
        if (other.hasWhatResearches()) {
          mergeWhatResearches(other.getWhatResearches());
        }
        if (other.hasWeapon()) {
          mergeWeapon(other.getWeapon());
        }
        if (whatUsesBuilder_ == null) {
          if (!other.whatUses_.isEmpty()) {
            if (whatUses_.isEmpty()) {
              whatUses_ = other.whatUses_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureWhatUsesIsMutable();
              whatUses_.addAll(other.whatUses_);
            }
            onChanged();
          }
        } else {
          if (!other.whatUses_.isEmpty()) {
            if (whatUsesBuilder_.isEmpty()) {
              whatUsesBuilder_.dispose();
              whatUsesBuilder_ = null;
              whatUses_ = other.whatUses_;
              bitField0_ = (bitField0_ & ~0x00000200);
              whatUsesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getWhatUsesFieldBuilder() : null;
            } else {
              whatUsesBuilder_.addAllMessages(other.whatUses_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }