
contract NameClash =

  entrypoint double_proto : () => int
  entrypoint double_proto : () => int

  entrypoint proto_and_def : int => int
  entrypoint proto_and_def(n) = n + 1

  entrypoint double_def(x) = x
  entrypoint double_def(y) = 0

  // abort, require, put and state are builtin
  entrypoint abort() : int = 0
  entrypoint require(b, err) = if(b) abort(err)
  entrypoint put(x) = x
  entrypoint state(x, y) = x + y
