public Builder mergeFrom(org.bwapi.proxy.messages.GameMessages.WeaponTypeData other) {
        if (other == org.bwapi.proxy.messages.GameMessages.WeaponTypeData.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000002;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasTech()) {
          mergeTech(other.getTech());
        }
        if (other.hasWhatUses()) {
          mergeWhatUses(other.getWhatUses());
        }
        if (other.hasDamageAmount()) {
          setDamageAmount(other.getDamageAmount());
        }
        if (other.hasDamageBonus()) {
          setDamageBonus(other.getDamageBonus());
        }
        if (other.hasDamageCooldown()) {
          setDamageCooldown(other.getDamageCooldown());
        }
        if (other.hasDamageFactor()) {
          setDamageFactor(other.getDamageFactor());
        }
        if (other.hasUpgradeType()) {
          mergeUpgradeType(other.getUpgradeType());
        }
        if (other.hasDamageType()) {
          setDamageType(other.getDamageType());
        }
        if (other.hasExplosionType()) {
          setExplosionType(other.getExplosionType());
        }
        if (other.hasMinRange()) {
          setMinRange(other.getMinRange());
        }
        if (other.hasMaxRange()) {
          setMaxRange(other.getMaxRange());
        }
        if (other.hasInnerSplashRadius()) {
          setInnerSplashRadius(other.getInnerSplashRadius());
        }
        if (other.hasMedianSplashRadius()) {
          setMedianSplashRadius(other.getMedianSplashRadius());
        }
        if (other.hasOuterSplashRadius()) {
          setOuterSplashRadius(other.getOuterSplashRadius());
        }
        if (other.hasTargetsAir()) {
          setTargetsAir(other.getTargetsAir());
        }
        if (other.hasTargetsGround()) {
          setTargetsGround(other.getTargetsGround());
        }
        if (other.hasTargetsMechanical()) {
          setTargetsMechanical(other.getTargetsMechanical());
        }
        if (other.hasTargetsOrganic()) {
          setTargetsOrganic(other.getTargetsOrganic());
        }
        if (other.hasTargetsNonBuilding()) {
          setTargetsNonBuilding(other.getTargetsNonBuilding());
        }
        if (other.hasTargetsNonRobotic()) {
          setTargetsNonRobotic(other.getTargetsNonRobotic());
        }
        if (other.hasTargetsTerrain()) {
          setTargetsTerrain(other.getTargetsTerrain());
        }
        if (other.hasTargetsOrgOrMech()) {
          setTargetsOrgOrMech(other.getTargetsOrgOrMech());
        }
        if (other.hasTargetsOwn()) {
          setTargetsOwn(other.getTargetsOwn());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }