private/tool.ss
(module tool mzscheme
  (require (lib "unit.ss")
	   (lib "class.ss")
	   (lib "tool.ss" "drscheme")
           (lib "string-constant.ss" "string-constants"))
  

  (provide tool@)
  
  (define tool@
    (unit
      (import drscheme:tool^)
      (export drscheme:tool-exports^)
      
      (define mbl% (drscheme:language:module-based-language->language-mixin
		    (drscheme:language:simple-module-based-language->module-based-language-mixin 
		     drscheme:language:simple-module-based-language%)))
      
      (define planet-module '(planet "typed-scheme.ss" ("plt" "typed-scheme.plt")))

      (define (typed-scheme-language% cl%)
	(class* cl% (drscheme:language:simple-module-based-language<%>)
	  (define/override (get-language-numbers)
	    '(1000 -401))
	  (define/override (get-language-name) "Typed Scheme")
	  (define/override (get-language-position)
	    (list (string-constant experimental-languages) "Typed Scheme"))
	  (define/override (get-module) planet-module)
 	  (define/override (get-one-line-summary)
	    "Scheme with types!")
          (define/override (get-language-url) "http://www.ccs.neu.edu/~samth/typed-scheme.html")
	  (define/override (enable-macro-stepper?) #t)
          (define/override (use-namespace-require/copy?) #f)
	  (super-new [module (get-module)] [language-position (get-language-position)])))
      
      (define (phase1) (void))
      (define (phase2)
        (drscheme:language-configuration:add-language 
	 (make-object (typed-scheme-language%
		       ((drscheme:language:get-default-mixin) 
			mbl%)))))))
  )