///|
fn main raise {
  let keys = [
    try! @graphml.Key::new(
      "kind",
      @graphml.NodeScope,
      @graphml.StringValue,
      name="kind",
    ),
  ]
  let builder = try! @graphml.FlatBuilder::new(
    keys,
    @graphml.Directed,
    graph_id="services",
  )
  try! builder.add_node("api", attributes=[
    ("kind", @graphml.TextValue("service")),
  ])
  try! builder.add_node("db", attributes=[
    ("kind", @graphml.TextValue("database")),
  ])
  try! builder.add_edge("api", "db", id="uses")
  let document = try! builder.finish()
  let encoded = try! @graphml.serialize(document)
  assert_true(document.equivalent(try! @graphml.parse(encoded)))
  let index = @graphml.GraphIndex::new(document)
  assert_eq(index.incident_edges(0, "db").length(), 1)
  println(encoded)
}