;;; -*- Mode:LISP; Package:USER; Readtable:ZL; Base:10 -*-

(defun copy-package-to-new-environment (prefix pkg-name parent-pkg all-packages-so-far)
  (let ((old-pkg (find-package pkg-name))
	(new-package (make-package (intern (string-append prefix pkg-name))
				   :super parent-package)))
    (setq all-packages-so-far 
    (cond ((null old-pkg)
	   (
  

(defun def-corresponding-packages (prefix pkg-tree)
  (let ((new-pkg (make-package (car pkg-tree))))
    (def-corresponding-packages-help prefix (cadr pkg-tree) new-pkg (list new-pkg))))

(defun def-corresponding-packages-help (prefix pkg-tree-children parent-pkg all-packages-so-far)
  (loop for child-pkg in pkg-tree-children
	do (if (listp child-pkg)
	       (def-corresponding-packages-help prefix
						(cadr child-pkg) 
		                                (copy-package-to-new-environment prefix
										 child-pkg
										 parent-pkg
										 all-packages-so-far)
						all-packages-so-far)
	     (copy-package-to-new-environment prefix child-pkg parent-pkg all-packages-so-far))))
