anchor.diff:          let lockThreadTracker() = Monitor.Enter(myLock)
           let unlockThreadTracker() = Monitor.Exit(myLock)
           let tcpListener = new TcpListener(System.Net.IPAddress.Any,port)
  +
  +        /// By default, dump any exception into the response.
  +        let defaultErrorHandler (err:System.Exception) =
  +            let resp = Response(500,"text/html")
  +            resp.Text <- sprintf "<PRE>\n%s\n%s\n</PRE>" err.Message err.StackTrace
  +            resp
  +
  +        /// Use this function to handle an exception raised during handling of a request.
  +        let errorHandler = Option.defaultValue defaultErrorHandler errorHandler
   
           ///
           let log level (s:string) =
  
positive.code: //            ()
  //    end
  
      type FSS(port:int) = class
          let mutable minLogLevel = 4
          let myLock = (1,2) // Need object not value for locking
          
  
negative.code:         | D7 of (UR->string->string->string->string->string->string->string->Response)
                  
      /// Dispatch URLs matching a set of pattens to functions
      type UD(port:int,urlsInit : (string * UDFunc) list,logLevel:int,delayStart:bool, ?errorHandler:ErrorHandler) as this = class
          inherit FSS(port, errorHandler)
          let urlMatch path (url,_) = Regex.Match(path,url).Success
          let mutable urls = urlsInit
  
  