public Builder mergeFrom(org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo other) {
        if (other == org.bwapi.proxy.messages.TerrainMessages.StaticTerrainInfo.getDefaultInstance()) return this;
        if (regionsBuilder_ == null) {
          if (!other.regions_.isEmpty()) {
            if (regions_.isEmpty()) {
              regions_ = other.regions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRegionsIsMutable();
              regions_.addAll(other.regions_);
            }
            onChanged();
          }
        } else {
          if (!other.regions_.isEmpty()) {
            if (regionsBuilder_.isEmpty()) {
              regionsBuilder_.dispose();
              regionsBuilder_ = null;
              regions_ = other.regions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              regionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getRegionsFieldBuilder() : null;
            } else {
              regionsBuilder_.addAllMessages(other.regions_);
            }
          }
        }
        if (chokepointsBuilder_ == null) {
          if (!other.chokepoints_.isEmpty()) {
            if (chokepoints_.isEmpty()) {
              chokepoints_ = other.chokepoints_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureChokepointsIsMutable();
              chokepoints_.addAll(other.chokepoints_);
            }
            onChanged();
          }
        } else {
          if (!other.chokepoints_.isEmpty()) {
            if (chokepointsBuilder_.isEmpty()) {
              chokepointsBuilder_.dispose();
              chokepointsBuilder_ = null;
              chokepoints_ = other.chokepoints_;
              bitField0_ = (bitField0_ & ~0x00000002);
              chokepointsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getChokepointsFieldBuilder() : null;
            } else {
              chokepointsBuilder_.addAllMessages(other.chokepoints_);
            }
          }
        }
        if (baseLocationsBuilder_ == null) {
          if (!other.baseLocations_.isEmpty()) {
            if (baseLocations_.isEmpty()) {
              baseLocations_ = other.baseLocations_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureBaseLocationsIsMutable();
              baseLocations_.addAll(other.baseLocations_);
            }
            onChanged();
          }
        } else {
          if (!other.baseLocations_.isEmpty()) {
            if (baseLocationsBuilder_.isEmpty()) {
              baseLocationsBuilder_.dispose();
              baseLocationsBuilder_ = null;
              baseLocations_ = other.baseLocations_;
              bitField0_ = (bitField0_ & ~0x00000004);
              baseLocationsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getBaseLocationsFieldBuilder() : null;
            } else {
              baseLocationsBuilder_.addAllMessages(other.baseLocations_);
            }
          }
        }
        if (!other.startLocations_.isEmpty()) {
          if (startLocations_.isEmpty()) {
            startLocations_ = other.startLocations_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureStartLocationsIsMutable();
            startLocations_.addAll(other.startLocations_);
          }
          onChanged();
        }
        if (unwalkablePolygonBuilder_ == null) {
          if (!other.unwalkablePolygon_.isEmpty()) {
            if (unwalkablePolygon_.isEmpty()) {
              unwalkablePolygon_ = other.unwalkablePolygon_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureUnwalkablePolygonIsMutable();
              unwalkablePolygon_.addAll(other.unwalkablePolygon_);
            }
            onChanged();
          }
        } else {
          if (!other.unwalkablePolygon_.isEmpty()) {
            if (unwalkablePolygonBuilder_.isEmpty()) {
              unwalkablePolygonBuilder_.dispose();
              unwalkablePolygonBuilder_ = null;
              unwalkablePolygon_ = other.unwalkablePolygon_;
              bitField0_ = (bitField0_ & ~0x00000010);
              unwalkablePolygonBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getUnwalkablePolygonFieldBuilder() : null;
            } else {
              unwalkablePolygonBuilder_.addAllMessages(other.unwalkablePolygon_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }