code: function jsEval(args) {
  	console.log("jsEval chosen");
  
  	// Unpack the arguments
  	var inputText = args[0];
  	var schemaText = args[1];
  	var compiledQuery = args[2];
  
  	// Convert input text to an object
  	var io = JSON.parse(inputText);
  	
  	// Find input in an 'io' object or else the object simply IS the input
  	var input = ("input" in io) ? io.input : io;
  	
  	// Convert the schema
  	var schema = schemaText.length > 0 ? JSON.parse(schemaText) : {};
  	
  	// Put inhertance at global scope so the evaluated query can see it
  	inheritance = ("hierarchy" in schema) ? schema.hierarchy
  			: ("inheritance" in schema) ? schema.inheritance : [];
  	
  	// Evaluate the query as a string, producing the function 'query' at global scope
  	eval(compiledQuery);
  	
  	// Run the actual query against the input (and 'inheritance')   This is what could potentially take a LONG time
  	var result = query(input);
  	
  	// Build the output display, including the output comparison if called for.
  	var prefix = "";
  	if ("output" in io)
  		prefix = verify(result, io.output) ? "Equal to the expected result:\n"
  				: "Differs from expected result:\n";
  	var result = prefix + JSON.stringify(result);
  
  	// Send the result back
  	postMessage(result);
  
  	// Each spawned worker is designed to be used once
  	close();
  }
docs: Javascript evaluation