 
   ###*
   Check which of the processes needs to stay active in order to render current process.
-  The ones that doesn't, are pushed to dead_processes.
+  The ones that doesn't, are pushed to `@dead_processes`.
 
   @method _filter_dead_processes
   ###

      @router = new Router @the, @Routes, @_on_router_change

  ###*
  Executed when the route changes, it creates a {{#crossLink "Process"}}{{/crossLink}} to manipulate the route, removes the current process, and run the new process alongside its dependencies.
  
  @method _on_router_change
  @param route {Route} Route containing the controller and url state information.


  # variables
  ###*
  Block the url state to be changed. Useful if there is a current {{#crossLink "Process"}}__Process__{{/crossLink}} being executed.

  @property {Boolean} locked
  ###
  locked: false
  disable_transitions: null

  ###*
    Stores the current processes that are active.

    @property active_processes {Array}
  ###
  active_processes: []

  ###*
    Stores the current processes that doesn't need to be active.

    @property dead_processes {Array}
  ###
  dead_processes: []

  ###*
    Stores the new Process dependencies.

    @property pending_processes {Array}
  ###
  pending_processes: []

  ###*
  Responsible for handling the url change. 

  When the URL changes, it initializes the Process responsible for the current Route (which is responsible for the current URL).
  
  Stores the new Process dependency processes at `@pending_processes`
  
  Destroy the current processes that are active, but are not dependency of the new Process.
  
  Runs the processes that are not active yet. 

  __Execution order__

  1. `_on_router_change` : 

      The URL changed, it will create a new Process to handle the current Route.

  2. `_filter_pending_processes`

      Will search for all the new Process dependencies recursively, and store them at `pending_processes`

  3. `_filter_dead_processes`

      Will search for all the processes that doesn't need to be active.

  4. `_destroy_dead_processes` - one by one, waiting or not for callback (timing can be sync/async)

      Will destroy the processes that doesn't need to be active.

  6. `_run_pending_process` - one by one, waiting or not for callback (timing can be sync/async)

      Will run the process that are required, but not active yet.

  @class Processes
  @constructor
  @param @the {Theoricus} Shortcut for app's instance.
  @param @Routes {Object} App routes defined in the `routes.coffee`
  ###
  constructor:( @the, @Routes )->
    Factory = @the.factory
