///|
pub fn GS1Message::first_value(self : GS1Message, code : String) -> String? {
  for elem in self.elements {
    if elem.code() == code {
      return Some(elem.value)
    }
  }
  None
}

///|
pub fn GS1Message::values(self : GS1Message, code : String) -> Array[String] {
  let out : Array[String] = []
  for elem in self.elements {
    if elem.code() == code {
      out.push(elem.value)
    }
  }
  out
}

///|
pub fn GS1Message::summary(self : GS1Message) -> String {
  self.elements.map(fn(elem) { "\{elem.title()}=\{elem.value}" }).join("; ")
}