_true = True.basicNew();
_false = False.basicNew(); 

// Make JsGlobal alert: 'something' work out of the box
JsGlobal = this;

// allow to use AnyClass.new() instead of new AnyClass(); where AnyClass is a function
Function.prototype._new = function(){
 var obj = {};
 this.apply(obj, arguments);
 return obj;
};

block = function(func) {
	b = BlockClosure._new();
	b.$creationContext = arguments.callee.caller;
	
	b.$func = function() {
		try {
			ret = func.apply(this, arguments);
			if (ret.$creationContext == func) {
				ret.$creationContext = this.$creationContext;
			}
			return ret;
		}
		catch(e) {
			if(e == func) {
				this.$creationContext.nonLocalReturnValue = e.nonLocalReturnValue;
				throw this.$creationContext;
			} 
			else {
				throw e;
			}
		}
	}
	b.$func.$creationContext = arguments.callee.caller;
	
	return b;
}
@@ -487,16 +487,44 @@
 %09if (ret
+ != undefined) %7B%0A%09%09%09  if(ret
 .$creati
@@ -548,16 +548,18 @@
 ) %7B%0A%09%09%09%09
+  
 ret.$cre
@@ -595,24 +595,32 @@
 Context;%0A%09%09%09
+  %7D%0A%09%09  
 %7D%0A%09%09%09return 
@@ -872,8 +872,9 @@
 urn b;%0A%7D
+;

check for undefined return value