/**
   * @param blockInfo
   * @return space required to write the metadata blocks that are part of Flac but are not part of
   *     tagdata in the normal sense.
   */
  private int computeNeededRoom(MetadataBlockInfo blockInfo) {
    int length = 0;

    for (MetadataBlock aMetadataBlockApplication : blockInfo.metadataBlockApplication) {
      length += aMetadataBlockApplication.getLength();
    }

    for (MetadataBlock aMetadataBlockSeekTable : blockInfo.metadataBlockSeekTable) {
      length += aMetadataBlockSeekTable.getLength();
    }

    for (MetadataBlock aMetadataBlockCueSheet : blockInfo.metadataBlockCueSheet) {
      length += aMetadataBlockCueSheet.getLength();
    }

    return length;
  }