 
 compileWheresInModule = (ast) ->
   ast.scope = topScopeDefines()
-  wheres = sortWheres whereList inside ast
+  wheres = checkEvenness sortWheres whereList inside ast
   "#{wheres.map(compileExportedDef).join '\n'}"
 
 compileExportedDef = ([name, def]) ->



compileWhereImpl = (wheres) ->
  sorted = sortWheres wheres
  "#{sorted.map(compileDef).join '\n'}"

sortWheres = (wheres) ->
  (sortTopologically constructDependencyGraph wheres).map ({def}) -> def


compileImpl = (node, hoistableWheres = []) ->
  # For now special case match to allow definition hoisting up one level
  if Array.isArray(node) and node.length > 2
    [op, args...] = inside node
    if op.type is 'operator' and op.token is 'match'
      return trueMacros[op.token] hoistableWheres, args...
