///|
/// Cellosaurus example: parse, query, and serialize a cell-line record.
///
/// Run: moon run examples/cellosaurus_demo/main.mbt
fn main {
  println("=== Cellosaurus Record Demo ===")
  try {
    let record = match @bio.cellosaurus_read(@bio.cellosaurus_sample_text()) {
      Some(record) => record
      None => abort("expected one Cellosaurus record")
    }

    println("Record: \{record.repr()}")
    println("Accession: \{record.accession}")
    println("Human origin: \{record.has_species("Homo sapiens")}")

    println("Synonyms:")
    for synonym in record.synonym_list() {
      println("  - \{synonym}")
    }

    println("Database cross-references:")
    for reference in record.cross_references {
      println("  - \{reference.database}: \{reference.accession}")
    }
    let ecacc = record.cross_references_for("ECACC")
    println("ECACC accessions: \{ecacc.length()}")

    let serialized = record.to_string()
    let reparsed = @bio.cellosaurus_parse(serialized)
    println("Round-trip records: \{reparsed.length()}")
  } catch {
    _ => println("Failed to parse the Cellosaurus sample")
  }
}