   defmacro try(args)
 
   @doc """
-  The current process will hang until it receives a message
-  from other processes that matches the given clauses.
+  Checks if there is a message matching the given clauses
+  in the current process mailbox.
+
+  In case there is no such message, the current process hangs
+  until a message arrives or waits until a given timeout value.
 
   ## Examples
 

  with a tail call as the final call inside an else clause. The same
  is true for rescue and catch clauses.

  ## Variable visibility

  Since an expression inside `try` may not have been evaluated
  due to an exception, any variable created inside `try` cannot

  defmacro super(args)

  @doc """
  Matches the given expression against the given clauses.

  ## Examples

      case thing do
        { :selector, i, value } when is_integer(i) ->
          value
        value ->
          value
      end

  In the example above, we match `thing` against each clause "head"
  and execute the clause "body" corresponding to the first clause
  that matches. If no clause matches, an error is raised.

  ## Variables handling

  Notice that variables bound in a clause "head" do not leak to the
  outer context:

      case data do
        { :ok, value } -> value
        :error -> nil
      end

      value #=> unbound variable value

  However, variables explicitly bound in the clause "body" are
  accessible from the outer context:

      value = 7

      case lucky? do
        false -> value = 13
        true  -> true
      end

      value #=> 7 or 13

  In the example above, value is going to be `7` or `13` depending on
  the value of `lucky?`. In case `value` has no previous value before
  case, clauses that do not explicitly bind a value have the variable
  bound to nil.
  """
  defmacro case(condition, blocks)

  @doc """
  Evaluate the given expressions and handle any error, exit
  or throw that may have happened.

  ## Examples
