///|
pub fn ThemeDocument::to_figma(self : ThemeDocument) -> String {
  let document = self.sorted()
  let builder = StringBuilder::new()
  builder.write_string("{\n")
  for i, token in document.tokens {
    if i > 0 {
      builder.write_string(",\n")
    }
    builder.write_string("  \"")
    builder.write_string(json_escape(token.path.canonical()))
    builder.write_string("\": {\"value\": ")
    builder.write_string(theme_value_json(token.value))
    builder.write_string(", \"type\": \"")
    builder.write_string(token_kind_name(token.kind))
    builder.write_string("\", \"description\": \"")
    builder.write_string(json_escape(token.description))
    builder.write_string("\"}")
  }
  if document.tokens.length() > 0 {
    builder.write_string("\n")
  }
  builder.write_string("}\n")
  builder.to_string()
}