anchor.diff:  
   
   '(flet ((button-control ()
  -			(declare (special use-js-file))
  -			(use-js-file 'behaviour)
  -			(list (xhtml:button '(:label "Fuck"))
  -					(xhtml:button '(:label "You")))))
  +	 (declare (special use-js-file))
  +	 (use-js-file 'behaviour)
  +	 (list (xhtml:button '(:label "Fuck"))
  +	       (xhtml:button '(:label "You")))))
     (write-document
  -	(with-document
  -	  (js-insertion-block ( #'xhtml-script-tag)
  -		 (use-js-file 'grid)
  -		 (xhtml:html
  -		  '()
  -		  (xhtml:head
  -			'()
  -			(xhtml:div '() "above")
  -			insert-script-here
  -			(xhtml:div '() "below")
  -			)
  -		  (xhtml:body
  -			'()
  -			(xhtml:div
  -			 '()
  -			 (use-js-file "js/initgrid.js")
  -			 (button-control))))
  -		 (xul:window '(:id "fuck")
  -						 (js-insertion-block (#'xul-script-tag)
  -							  (xul:button '(:label "fuck"))
  -							  insert-script-here
  -							(xul:button '(:label "you"))
  -							(use-js-file "js/fuck your mom in her dirty ass")))))))
  +   (with-document
  +     (js-insertion-block ( #'xhtml-script-tag)
  +       (use-js-file 'grid)
  +       (xhtml:html
  +	'()
  +	(xhtml:head
  +	 '()
  +	 (xhtml:div '() "above")
  +	 insert-script-here
  +	 (xhtml:div '() "below")
  +	 )
  +	(xhtml:body
  +	 '()
  +	 (xhtml:div
  +	  '()
  +	  (use-js-file "js/initgrid.js")
  +	  (button-control))))
  +       (xul:window '(:id "fuck")
  +		   (js-insertion-block (#'xul-script-tag)
  +		     (xul:button '(:label "fuck"))
  +		     insert-script-here
  +		     (xul:button '(:label "you"))
  +		     (use-js-file "js/fuck your mom in her dirty ass")))))))
   
   		
positive.code:  (use-js-file (url-or-JsName :depends-on '(a dependency list of urls and keyword names)) => has the side effect of adding a js-file to the js-collection
  With js-collector also appends all (non-nil) elements in body to the document"
    `(let* ((*js-collector* (make-js-collector)))
  	 (declare (special *js-collector*))
  	 (let ((body-rtn-list (list ,@body)))
  		(values
  		 body-rtn-list
  		 (js-list *js-collector*)))))
  
  (defun make-script-tags-from-list (script-tag-function url-list)
    "script tag function is a function that accepts a url and creates script tags out of them"
  	(mapcar
  	 (lambda (url)
  		(funcall script-tag-function url))
  	 url-list))
  
  (defmacro js-insertion-block ((make-script-fn &key (insertion-point-symbol 'insert-script-here)) &body body)
    "creates an environment in which there are a function: (use-js-file url &key depends-on) which will declare your usage of a script file and a symbol-macro: as defined by the keyword argument insertion-point-symbol (defaults to 'insert-script-here) that will be the final location of all of the collected script tags in the body"
    (arnesi:with-unique-names (chillins js-url-list script-tags replacement-node parent )
    `(let ((,replacement-node)) 
  	 (symbol-macrolet ((,insertion-point-symbol 
  					(if ,replacement-node
  					  (error "More than one script tag insertion point in a document is not allowed")
  					  (setf ,replacement-node (create-complete-element *document* "adw" "adw:replacement-node" '() '())))))
  	 (multiple-value-bind (,chillins ,js-url-list)
  		  (with-javascript-collector
  			 ,@body)
  		(let ((,script-tags (reverse
  						  (make-script-tags-from-list
  									 ,make-script-fn
  									 ,js-url-list))))
  		  (arnesi:if-bind ,parent (dom:parent-node ,replacement-node)
  						  (progn
  							 (mapc
  							  (lambda (elem)
  								 (dom:insert-before ,parent elem ,replacement-node))
  							  ,script-tags)
  							 (dom:remove-child ,parent ,replacement-node)
  							 ,chillins)
  						  (substitute ,script-tags ,replacement-node ,chillins ))))))))
  
  (defun xhtml-script-tag (url)
    (make-script-fn #'xhtml:script url))
  
negative.code: (defun get-url-from-key (key js-dependency-graph)
    "gets the url for a key reguardles of whether it is a symbol or url (assuming it is in the graph)"
    (if (stringp key) key
        (let ((it (find-graph-node key js-dependency-graph)))
  	(when it
  	  (js-graph-node-url it)))))
  
  (defun creates-circular-dependency-p (key dep-list js-dependency-graph &optional visited-list)
    "checks if inserting into key into a js-dependency-list will cause a unseemly circular relationships to the beautiful dependency graph.  And you wouldnt want thatn now would you"
    (let ((key-url (get-url-from-key key js-dependency-graph)))
      (when key-url
        (or (find key-url visited-list :test #'equal)
  	  (progn
  	    (push key-url visited-list)
  	    (some
  	     (lambda (elem)
  	       (let ((graph-node (find-graph-node elem js-dependency-graph)))
  		 (when graph-node
  		   (creates-circular-dependency-p (js-graph-node-url graph-node)
  						  (js-graph-node-dependency-list graph-node)
  						  js-dependency-graph
  						  visited-list))))
  	     dep-list))))))
  
  (defun add-graph-node (key val js-dependency-graph)
    (if (creates-circular-dependency-p key (js-graph-node-dependency-list val) js-dependency-graph)
        (error "Insertion will lead to a circular dependency graph ~% key:~a~%graph:~a" key js-dependency-graph )
        (setf (gethash key js-dependency-graph) val)))
  
  (defun make-js-collector ()
    "small quicky alias for make-instance 'js-collector)"
  