code: static RollingSegmentHandle deserialize(byte[] serialization, SegmentHandle headerHandle) {
          StringTokenizer st = new StringTokenizer(new String(serialization, ENCODING), SEPARATOR, false);
          Preconditions.checkArgument(st.hasMoreTokens(), "No separators in serialization.");
  
          SegmentRollingPolicy policy = null;
          OffsetAdjuster om = new OffsetAdjuster();
          long lastOffset = 0;
          ArrayList<SegmentChunk> segmentChunks = new ArrayList<>();
          while (st.hasMoreTokens()) {
              val entry = parse(st.nextToken());
              if (entry.getKey().equalsIgnoreCase(KEY_POLICY_MAX_SIZE)) {
                  // Rolling policy entry: only check if we don't have it set yet.
                  if (policy == null) {
                      Preconditions.checkArgument(isValidLong(entry.getValue()), "Invalid entry value for '%s'.", entry);
                      policy = new SegmentRollingPolicy(Long.parseLong(entry.getValue()));
                  }
              } else if (entry.getKey().equalsIgnoreCase(KEY_CONCAT)) {
                  // Concat entry header. This contains information about an upcoming concat.
                  val concatInfo = parseConcat(entry.getValue());
                  om.set(concatInfo.getKey(), concatInfo.getValue());
              } else {
                  // Regular offset->file entry.
                  Preconditions.checkArgument(isValidLong(entry.getKey()), "Invalid key value for '%s'.", entry);
                  long offset = om.adjustOffset(Long.parseLong(entry.getKey()));
                  SegmentChunk s = new SegmentChunk(entry.getValue(), offset);
                  Preconditions.checkArgument(lastOffset <= s.getStartOffset(),
                          "SegmentChunk Entry '%s' has out-of-order offset (previous=%s).", s, lastOffset);
                  segmentChunks.add(s);
                  lastOffset = s.getStartOffset();
              }
          }
  
          RollingSegmentHandle h = new RollingSegmentHandle(headerHandle, policy, segmentChunks);
          h.setHeaderLength(serialization.length);
          return h;
      }
docs: Deserializes the given byte array into a RollingSegmentHandle.
  
  @param serialization The byte array to deserialize.
  @param headerHandle  The SegmentHandle for the Header file.
  @return A new instance of the RollingSegmentHandle class.