module
	kind jsfile

	var util = require('util')
	var path = require('path')
	var _ = require('lodash')
    var chalk = require('chalk')
	var wzutils = require('wizzi-utils')
	var verify = wzutils.verify
	$foreach require in schema.requiredModules
		var ${require.declareVar} = require('${require.wzName}')${require.invoke}
	+
	$if schema.declares.length > 0
		#
			# Schema wide declarations
		$foreach declare in schema.declares
			$foreach statement in declare.statements
				jst ${statement.wzName}
	+
	var _md = module.exports = {}
	+
	model/wzsourcelineinfo( )
	
	model/base( )
	+

	$foreach element in schema.elements
		model/element( &element )

	$if schema.tagElementMapping && schema.tagElementMapping.length > 0
		set _md.__tagElementMapping = ${schema.tagElementMapping}
	
	# model/replaceUnknownElement( )
	model/exception( )
	model/context( )
	model/requiredfunctions( )
	
	$foreach method in schema.methods
		function ${method.wzName}
			$foreach param in method.params
				param ${param.wzName}
			$foreach statement in method.statements
				jst ${statement.wzName}