///|
priv struct PdfMergeDictionaryBuilder {
  entries : Array[(@core.PdfName, @syntax.PdfObject)]
  indexes : @hashmap.HashMap[Bytes, Int]
}

///|
fn pdf_merge_dictionary_builder() -> PdfMergeDictionaryBuilder {
  { entries: [], indexes: HashMap([]), }
}

///|
fn PdfMergeDictionaryBuilder::add_entry(
  self : PdfMergeDictionaryBuilder,
  key : @core.PdfName,
  value : @syntax.PdfObject,
) -> Unit {
  let index_key = key.bytes()
  match self.indexes.get(index_key) {
    Some(index) => self.entries[index] = (key, value)
    None => {
      self.indexes[index_key] = self.entries.length()
      self.entries.push((key, value))
    }
  }
}