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

      size = 0;
      for (int i = 0; i < regions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, regions_.get(i));
      }
      for (int i = 0; i < chokepoints_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, chokepoints_.get(i));
      }
      for (int i = 0; i < baseLocations_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, baseLocations_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < startLocations_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(startLocations_.get(i));
        }
        size += dataSize;
        size += 1 * getStartLocationsList().size();
      }
      for (int i = 0; i < unwalkablePolygon_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, unwalkablePolygon_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }