public Builder mergeFrom(org.bwapi.proxy.messages.TerrainMessages.Polygon other) {
        if (other == org.bwapi.proxy.messages.TerrainMessages.Polygon.getDefaultInstance()) return this;
        if (verticesBuilder_ == null) {
          if (!other.vertices_.isEmpty()) {
            if (vertices_.isEmpty()) {
              vertices_ = other.vertices_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureVerticesIsMutable();
              vertices_.addAll(other.vertices_);
            }
            onChanged();
          }
        } else {
          if (!other.vertices_.isEmpty()) {
            if (verticesBuilder_.isEmpty()) {
              verticesBuilder_.dispose();
              verticesBuilder_ = null;
              vertices_ = other.vertices_;
              bitField0_ = (bitField0_ & ~0x00000001);
              verticesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVerticesFieldBuilder() : null;
            } else {
              verticesBuilder_.addAllMessages(other.vertices_);
            }
          }
        }
        if (other.hasArea()) {
          setArea(other.getArea());
        }
        if (other.hasPerimeter()) {
          setPerimeter(other.getPerimeter());
        }
        if (other.hasCenter()) {
          mergeCenter(other.getCenter());
        }
        if (holesBuilder_ == null) {
          if (!other.holes_.isEmpty()) {
            if (holes_.isEmpty()) {
              holes_ = other.holes_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureHolesIsMutable();
              holes_.addAll(other.holes_);
            }
            onChanged();
          }
        } else {
          if (!other.holes_.isEmpty()) {
            if (holesBuilder_.isEmpty()) {
              holesBuilder_.dispose();
              holesBuilder_ = null;
              holes_ = other.holes_;
              bitField0_ = (bitField0_ & ~0x00000010);
              holesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getHolesFieldBuilder() : null;
            } else {
              holesBuilder_.addAllMessages(other.holes_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }