code: public void processChildren(Node node) {
  		for (Node cursor = node.getFirstChild(); cursor != null; cursor = cursor.getNext()) {
  			if (cursor.getType() == Token.CALL) {
  				// The node is a function or method call
  				Node name = cursor.getFirstChild();
  				if (name != null && name.getType() == Token.NAME && // named function call
  						name.getString().equals("define")) { // name is "define" //$NON-NLS-1$
  					Node param = name.getNext();
  					if (param != null && param.getType() != Token.STRING) {
  						String expname = name.getProp(Node.SOURCENAME_PROP).toString();
  						if (source != null) {
  							PositionLocator locator = source.locate(name.getLineno(), name.getCharno()+6);
  							char tok = locator.findNextJSToken();	// move cursor to the open paren
  							if (tok == '(') {
  								// Try to insert the module name immediately following the open paren for the
  								// define call because the param location will be off if the argument list is parenthesized.
  								source.insert("\"" + expname + "\",", locator.getLineno(), locator.getCharno()+1); //$NON-NLS-1$ //$NON-NLS-2$
  							} else {
  								// First token following 'define' name is not a paren, so fall back to inserting
  								// before the first parameter.
  								source.insert("\"" + expname + "\",", param.getLineno(), param.getCharno()); //$NON-NLS-1$ //$NON-NLS-2$
  							}
  						}
  						param.getParent().addChildBefore(Node.newString(expname), param);
  					}
  				}
  			}
  			// Recursively call this method to process the child nodes
  			if (cursor.hasChildren())
  				processChildren(cursor);
  		}
  	}
docs: Recursively called to process AST nodes looking for anonymous define calls. If an
  anonymous define call is found, then change it be a named define call, specifying
  the module name for the file being processed.
  
  @param node
  The node being processed