 		isArrayOf @declarations, VariableDeclarator
 
 class VariableDeclarator extends Node
-	constructor: (patt, @init=null, loc = null) ->
+	constructor: (patt, @init = null, loc = null) ->
 		super 'VariableDeclarator', loc
 		@id = patt
 		isA @id, Pattern

		@argument = arg
		isNullOr @argument, Expression



Types =
	arrayExpression: ArrayExpression

			return new (ctor.bind.apply ctor, [null].concat args)()

# Optionally move type builders into the global scope
globalize = module.exports.globalize = ->
	global[type] = builders[type] for type of Types

validate = module.exports.validate = (tree) ->
	args = []
	for prop in Properties[tree.type]
		if !tree[prop]?
			args.push null
			continue
		if Array.isArray tree[prop]
			args.push tree[prop].map (el) -> validate el
		else if typeof tree[prop] == 'object' and tree[prop].type?
			args.push validate tree[prop]
		else
			args.push tree[prop]
	builders[tree.type[0].toLowerCase() + tree.type[1...]].apply(null, args)

