public JsBlockStatement Compile(Statement statement) {
			SetRegion(statement.GetRegion());
			try {
				_result = new List<JsStatement>();
				statement.AcceptVisitor(this);
				if (_result.Count == 1 && _result[0] is JsBlockStatement)
					return (JsBlockStatement)_result[0];
				else
					return JsStatement.Block(_result);
			}
			catch (Exception ex) {
				_errorReporter.InternalError(ex);
				return JsStatement.EmptyBlock;
			}
		}
 public JsBlockStatement Compile(Statement statement)
 {
     _filename = statement.GetRegion().FileName;
     try {
         _result = new List<JsStatement>();
         statement.AcceptVisitor(this);
         if (_result.Count == 1 && _result[0] is JsBlockStatement)
             return (JsBlockStatement)_result[0];
         else
             return new JsBlockStatement(_result);
     }
     catch (Exception ex) {
         _errorReporter.InternalError(ex, _filename, _location);
         return new JsBlockStatement();
     }
 }