anchor.diff:  			 (set-read-number-part ,currently-reading ,buffer
   			   (next-char ,buffer) ; we can skip the matching character in exp-delimiters after the variables have been set
   			   (read-number* ,buffer :currently-reading :exponent :exponent-p nil :float-p ,float-p :float-delimiters ,float-delimiters :exp-delimiters ,exp-delimiters :number-delimiters ,number-delimiters)))))
  -		    `((T
  +		    `((t
   		       (set-read-number-part ,currently-reading ,buffer
   			 ,(create-parse-number-code :exponent-p (not exponent-p) :float-p (not float-p))))))))))))
   
  
positive.code: 		  (declare (type fixnum exp))
  		  ,@body))))
  
  (defmacro read-number* (buffer &key (currently-reading :whole) (exponent-p T) (float-p T) (float-delimiters ".") (exp-delimiters "eE") (number-delimiters ",]} "))
    "This macro should be compared to inlined functions with respect to speed.  The macro creates a tree of spaghetti code that can read jsown numbers to lisp numbers."
    (labels ((delimiters-for (exponent-p float-p)
  	     (concatenate 'string (if float-p float-delimiters "") (if exponent-p exp-delimiters "") number-delimiters)))
  
negative.code:   (flet ((char-in-arr () ;; TODO I can use char-in-arr
             (loop for c across char-arr
                when (eql (current-char buffer) (the character c))
                do (return-from char-in-arr t))
             nil))
      (loop until (char-in-arr)
         do (next-char buffer))))
  