|  | @@ -241,6 +241,26 @@ function Smalltalk(){
 | 
	
		
			
				|  |  |  	    .replace(/_comma/, ',')
 | 
	
		
			
				|  |  |  	    .replace(/_at/, '@')
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /* Converts a JavaScript object to valid Smalltalk Object */
 | 
	
		
			
				|  |  | +    st.readJSObject = function(js) {
 | 
	
		
			
				|  |  | +	var object = js;
 | 
	
		
			
				|  |  | +	var readObject = (js.constructor === Object);
 | 
	
		
			
				|  |  | +	var readArray = (js.constructor === Array);
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	if(readObject) {
 | 
	
		
			
				|  |  | +	    object = smalltalk.Dictionary._new();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	for(var i in js) {
 | 
	
		
			
				|  |  | +	    if(readObject) {
 | 
	
		
			
				|  |  | +		object._at_put_(i, st.readJSObject(js[i]));
 | 
	
		
			
				|  |  | +	    } 
 | 
	
		
			
				|  |  | +	    if(readArray) {
 | 
	
		
			
				|  |  | +		object[i] = st.readJSObject(js[i]);
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	return object;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  function SmalltalkMethodContext() {
 | 
	
	
		
			
				|  | @@ -288,6 +308,8 @@ smalltalk.mapClassName("String", "Kernel", String, smalltalk.SequenceableCollect
 | 
	
		
			
				|  |  |  smalltalk.mapClassName("Array", "Kernel", Array, smalltalk.SequenceableCollection);
 | 
	
		
			
				|  |  |  smalltalk.mapClassName("RegularExpression", "Kernel", RegExp, smalltalk.String);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +smalltalk.mapClassName("Error", "Kernel", Error, smalltalk.Object);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  if(CanvasRenderingContext2D) {
 | 
	
		
			
				|  |  |      smalltalk.mapClassName("CanvasRenderingContext", "Canvas", CanvasRenderingContext2D, smalltalk.Object);
 | 
	
		
			
				|  |  |  }
 |