public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < staticMinerals_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, staticMinerals_.get(i));
      }
      for (int i = 0; i < staticGeysers_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, staticGeysers_.get(i));
      }
      for (int i = 0; i < staticNeutralUnits_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, staticNeutralUnits_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, mapWidth_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, mapHeight_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, getMapFilenameBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getMapNameBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, getMapHashBytes());
      }
      {
        int dataSize = 0;
        dataSize = 4 * getWalkableList().size();
        size += dataSize;
        size += 1 * getWalkableList().size();
      }
      {
        int dataSize = 0;
        dataSize = 4 * getBuildableList().size();
        size += dataSize;
        size += 1 * getBuildableList().size();
      }
      for (int i = 0; i < unitTypes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, unitTypes_.get(i));
      }
      for (int i = 0; i < weapons_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, weapons_.get(i));
      }
      for (int i = 0; i < upgrades_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, upgrades_.get(i));
      }
      for (int i = 0; i < techs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, techs_.get(i));
      }
      for (int i = 0; i < colors_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, colors_.get(i));
      }
      for (int i = 0; i < startLocations_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, startLocations_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < groundHeight_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(groundHeight_.get(i));
        }
        size += dataSize;
        size += 2 * getGroundHeightList().size();
      }
      for (int i = 0; i < races_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, races_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }