public Builder mergeFrom(org.bwapi.proxy.messages.TerrainMessages.BaseLocation other) {
        if (other == org.bwapi.proxy.messages.TerrainMessages.BaseLocation.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasPosition()) {
          mergePosition(other.getPosition());
        }
        if (other.hasTilePosition()) {
          mergeTilePosition(other.getTilePosition());
        }
        if (other.hasRegion()) {
          setRegion(other.getRegion());
        }
        if (other.hasNumMinerals()) {
          setNumMinerals(other.getNumMinerals());
        }
        if (other.hasNumGas()) {
          setNumGas(other.getNumGas());
        }
        if (mineralsBuilder_ == null) {
          if (!other.minerals_.isEmpty()) {
            if (minerals_.isEmpty()) {
              minerals_ = other.minerals_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureMineralsIsMutable();
              minerals_.addAll(other.minerals_);
            }
            onChanged();
          }
        } else {
          if (!other.minerals_.isEmpty()) {
            if (mineralsBuilder_.isEmpty()) {
              mineralsBuilder_.dispose();
              mineralsBuilder_ = null;
              minerals_ = other.minerals_;
              bitField0_ = (bitField0_ & ~0x00000040);
              mineralsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMineralsFieldBuilder() : null;
            } else {
              mineralsBuilder_.addAllMessages(other.minerals_);
            }
          }
        }
        if (staticMineralsBuilder_ == null) {
          if (!other.staticMinerals_.isEmpty()) {
            if (staticMinerals_.isEmpty()) {
              staticMinerals_ = other.staticMinerals_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureStaticMineralsIsMutable();
              staticMinerals_.addAll(other.staticMinerals_);
            }
            onChanged();
          }
        } else {
          if (!other.staticMinerals_.isEmpty()) {
            if (staticMineralsBuilder_.isEmpty()) {
              staticMineralsBuilder_.dispose();
              staticMineralsBuilder_ = null;
              staticMinerals_ = other.staticMinerals_;
              bitField0_ = (bitField0_ & ~0x00000080);
              staticMineralsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getStaticMineralsFieldBuilder() : null;
            } else {
              staticMineralsBuilder_.addAllMessages(other.staticMinerals_);
            }
          }
        }
        if (geysersBuilder_ == null) {
          if (!other.geysers_.isEmpty()) {
            if (geysers_.isEmpty()) {
              geysers_ = other.geysers_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureGeysersIsMutable();
              geysers_.addAll(other.geysers_);
            }
            onChanged();
          }
        } else {
          if (!other.geysers_.isEmpty()) {
            if (geysersBuilder_.isEmpty()) {
              geysersBuilder_.dispose();
              geysersBuilder_ = null;
              geysers_ = other.geysers_;
              bitField0_ = (bitField0_ & ~0x00000100);
              geysersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getGeysersFieldBuilder() : null;
            } else {
              geysersBuilder_.addAllMessages(other.geysers_);
            }
          }
        }
        if (other.hasIsland()) {
          setIsland(other.getIsland());
        }
        if (other.hasMineralOnly()) {
          setMineralOnly(other.getMineralOnly());
        }
        if (other.hasStartLocation()) {
          setStartLocation(other.getStartLocation());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }