pub fn add(x: Int, y: Int) -> Int {
// <- type.qualifier
//  ^^ keyword.function
//     ^^^ function
//        ^ punctuation.bracket
//         ^ parameter
//          ^ punctuation.delimiter
//            ^^^ type.builtin
//               ^ punctuation.delimiter
//                 ^ parameter
//                  ^ punctuation.delimiter
//                    ^^^ type.builtin
//                       ^ punctuation.bracket
//                         ^ punctuation.delimiter
//                            ^^^ type.builtin
//                                ^ punctuation.bracket
}
// <- punctuation.bracket

pub fn twice(f: fn(t) -> t, x: t) -> t {
// <- type.qualifier
//  ^ keyword.function
//     ^^^^^ function
//          ^ punctuation.bracket
//           ^ parameter
//            ^ punctuation.delimiter
//              ^^ keyword.function
//                ^ punctuation.bracket
//                 ^ type
//                  ^ punctuation.bracket
//                    ^^ punctuation.delimiter
//                       ^ type
//                        ^ punctuation.delimiter
//                          ^ parameter
//                           ^ punctuation.delimiter
//                             ^ type
//                              ^ punctuation.bracket
//                                ^^ punctuation.delimiter
//                                   ^ type
//                                     ^ punctuation.bracket
}
// <- punctuation.bracket

fn list_of_two(my_value: a) -> List(a) {
// <- keyword.function
// ^ function
//            ^ punctuation.bracket
//             ^ parameter
//                     ^ punctuation.delimiter
//                       ^ type
//                        ^ punctuation.bracket
//                          ^ punctuation.delimiter
//                             ^^^^ type.builtin
//                                 ^ punctuation.bracket
//                                  ^ type
//                                   ^ punctuation.bracket
//                                     ^ punctuation.bracket
}
// <- punctuation.bracket

fn replace(
// <- keyword.function
// ^^^^^^^ function
//        ^ punctuation.bracket
  in string: String,
  // <- label
  // ^^^^^^ parameter
  //       ^ punctuation.delimiter
  //         ^^^^^^ type.builtin
  //               ^ punctuation.delimiter
  each pattern: String,
  // <- label
  //   ^^^^^^^ parameter
  //          ^ punctuation.delimiter
  //            ^^^^^^ type.builtin
  //                  ^ punctuation.delimiter
  with replacement: String,
  // <- label
  //   ^^^^^^^^^^^ parameter
  //              ^ punctuation.delimiter
  //                ^^^^^^ type.builtin
  //                      ^ punctuation.delimiter
) {
  replace(in: "A,B,C", each: ",", with: " ")
  // <- function.call
  //     ^ punctuation.bracket
  //      ^^ label
  //        ^ punctuation.delimiter
  //          ^^^^^^^ string
  //                 ^ punctuation.delimiter
  //                   ^^^^ label
  //                       ^ punctuation.delimiter
  //                         ^^^ string
  //                            ^ punctuation.delimiter
  //                              ^^^^ label
  //                                  ^ punctuation.delimiter
  //                                    ^^^ string
  //                                       ^ punctuation.bracket
}
// <- punctuation.bracket

pub external fn random_float() -> Float = "rand" "uniform"
// <- type.qualifier
//  ^^^^^^^^ type.qualifier
//           ^^ keyword.function
//              ^^^^^^^^^^^^ function
//                          ^ punctuation.bracket
//                           ^ punctuation.bracket
//                             ^^ punctuation.delimiter
//                                ^^^^^ type.builtin
//                                      ^ operator
//                                        ^^^^^^ namespace
//                                               ^^^^^^^^^ function

pub external fn inspect(a) -> a = "Elixir.IO" "inspect"
// <- type.qualifier
//  ^^^^^^^^ type.qualifier
//           ^^ keyword.function
//              ^^^^^^^ function
//                     ^ punctuation.bracket
//                      ^ type
//                       ^ punctuation.bracket
//                         ^^ punctuation.delimiter
//                            ^ type
//                              ^ operator
//                                ^^^^^^^^^^^ namespace
//                                            ^^^^^^^^^ function