diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index e9553e1..44f8ba2 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -19153,8 +19153,41 @@ Stack of results of reduced productions.
 
 \end{chunk}
 
-\chapter{Comment handlers}
+\chapter{Comment Recording}
+
+\begin{chunk}{v9CommentRecording.dot}
+digraph pic {
+ fontsize=10;
+ bgcolor="#ECEA81";
+ node [shape=box, color=white, style=filled];
+
+"postDef"       		[color="#FFFFFF"]
+"PARSE-Category"       		[color="#FFFFFF"]
+
+"recordAttributeDocumentation" 	[color="#FF6600"]
+"recordSignatureDocumentation" 	[color="#FF6600"]
+"recordDocumentation" 		[color="#2222DD"]
+"collectComBlock" 		[color="#22EE22"]
+"recordHeaderDocumentation" 	[color="#FFFF66"]
+"collectAndDeleteAssoc" 	[color="#FFFF66"]
+
+"postDef"                       ->  "recordHeaderDocumentation"
+"PARSE-Category"                ->  "recordSignatureDocumentation"
+"PARSE-Category"                ->  "recordAttributeDocumentation"
+
+"recordAttributeDocumentation" 	->  "recordDocumentation"
+"recordSignatureDocumentation" 	->  "recordDocumentation"
+"recordDocumentation" 		->  "recordHeaderDocumentation"
+"recordDocumentation" 		->  "collectComBlock"
+"collectComBlock" 		->  "collectAndDeleteAssoc"
+}
+
+\end{chunk}
+
+\section{Comment Recording Layer 0 -- API}
+
 \defun{recordSignatureDocumentation}{recordSignatureDocumentation}
+This function is called externally by PARSE-Category.
 \calls{recordSignatureDocumentation}{recordDocumentation}
 \calls{recordSignatureDocumentation}{postTransform}
 \begin{chunk}{defun recordSignatureDocumentation}
@@ -19163,8 +19196,8 @@ Stack of results of reduced productions.
 
 \end{chunk}
 
-
 \defun{recordAttributeDocumentation}{recordAttributeDocumentation}
+This function is called externally by PARSE-Category.
 \calls{recordAttributeDocumentation}{opOf}
 \calls{recordAttributeDocumentation}{pname}
 \calls{recordAttributeDocumentation}{upper-case-p}
@@ -19184,6 +19217,8 @@ Stack of results of reduced productions.
 
 \end{chunk}
 
+\section{Comment Recording Layer 1}
+
 \defun{recordDocumentation}{recordDocumentation}
 \calls{recordDocumentation}{recordHeaderDocumentation}
 \calls{recordDocumentation}{collectComBlock}
@@ -19200,7 +19235,31 @@ Stack of results of reduced productions.
 
 \end{chunk}
 
+\section{Comment Recording Layer 2}
+
+\defun{collectComBlock}{collectComBlock}
+\calls{collectComBlock}{collectAndDeleteAssoc}
+\defsdollar{collectComBlock}{comblocklist}
+\begin{chunk}{defun collectComBlock}
+(defun |collectComBlock| (x)
+ (let (val u)
+ (declare (special $comblocklist))
+  (cond
+   ((and (consp $comblocklist)
+         (consp (qcar $comblocklist)) 
+         (equal (qcaar $comblocklist) x))
+     (setq val (qcdar $comblocklist))
+     (setq u (append val (|collectAndDeleteAssoc| x)))
+     (setq $comblocklist (cdr $comblocklist))
+     u)
+   (t (|collectAndDeleteAssoc| x)))))
+
+\end{chunk}
+
+\section{Comment Recording Layer 3}
+
 \defun{recordHeaderDocumentation}{recordHeaderDocumentation}
+This function is called externally by postDef.
 \calls{recordHeaderDocumentation}{assocright}
 \refsdollar{recordHeaderDocumentation}{maxSignatureLineNumber}
 \refsdollar{recordHeaderDocumentation}{comblocklist}
@@ -19224,25 +19283,6 @@ Stack of results of reduced productions.
 
 \end{chunk}
 
-\defun{collectComBlock}{collectComBlock}
-\calls{collectComBlock}{collectAndDeleteAssoc}
-\defsdollar{collectComBlock}{comblocklist}
-\begin{chunk}{defun collectComBlock}
-(defun |collectComBlock| (x)
- (let (val u)
- (declare (special $comblocklist))
-  (cond
-   ((and (consp $comblocklist)
-         (consp (qcar $comblocklist)) 
-         (equal (qcaar $comblocklist) x))
-     (setq val (qcdar $comblocklist))
-     (setq u (append val (|collectAndDeleteAssoc| x)))
-     (setq $comblocklist (cdr $comblocklist))
-     u)
-   (t (|collectAndDeleteAssoc| x)))))
-
-\end{chunk}
-
 \defun{collectAndDeleteAssoc}{collectAndDeleteAssoc}
 \begin{verbatim}
    u is (.. (x . a) .. (x . b) .. )  ==> (a b ..) 
@@ -19267,6 +19307,257 @@ deleting entries from u assumes that the first element is useless
 
 \end{chunk}
 
+\chapter{Comment Syntax Checking}
+
+\begin{chunk}{v9CommentSyntaxChecking.dot}
+digraph hierarchy {
+ fontsize=10;
+ bgcolor="#ECEA81";
+ node [shape=box, color=white, style=filled];
+
+"compileDocumentation"		[color="#FFFFFF"]
+"finalizeLisplib"     		[color="#FFFFFF"]
+
+{rank=same; "compileDocumentation" "finalizeLisplib"}
+
+"checkAddBackSlashes" 		[color="#FFFF66"]
+"checkAddMacros" 		[color="#FFFF66"]
+"checkAddPeriod" 		[color="#FFFF66"]
+"checkAddSpaceSegments" 	[color="#FFFF66"]
+"checkAddSpaces" 		[color="#FFFF66"]
+"checkAlphabetic" 		[color="#FFFF66"]
+"checkIeEgfun" 			[color="#FFFF66"]
+"checkIsValidType" 		[color="#FFFF66"]
+"checkLookForLeftBrace" 	[color="#FFFF66"]
+"checkLookForRightBrace" 	[color="#FFFF66"]
+"checkNumOfArgs" 		[color="#FFFF66"]
+"checkSayBracket" 		[color="#FFFF66"]
+"checkSkipBlanks" 		[color="#FFFF66"]
+"checkSplitBackslash" 		[color="#FFFF66"]
+"checkSplitOn" 			[color="#FFFF66"]
+"checkSplitPunctuation" 	[color="#FFFF66"]
+"firstNonBlankPosition" 	[color="#FFFF66"]
+"getMatchingRightPren" 		[color="#FFFF66"]
+"hasNoVowels" 			[color="#FFFF66"]
+"htcharPosition" 		[color="#FFFF66"]
+"newWordFrom" 			[color="#FFFF66"]
+"removeBackslashes" 		[color="#FFFF66"]
+"whoOwns" 			[color="#FFFF66"]
+
+{rank=same; 
+  "checkAddBackSlashes"
+  "checkAddMacros"
+  "checkAddPeriod"
+  "checkAddSpaceSegments"
+  "checkAddSpaces"
+  "checkAlphabetic"
+  "checkIeEgfun"
+  "checkIsValidType"
+  "checkLookForLeftBrace"
+  "checkLookForRightBrace"
+  "checkNumOfArgs"
+  "checkSayBracket"
+  "checkSkipBlanks"
+  "checkSplitBackslash"
+  "checkSplitOn"
+  "checkSplitPunctuation"
+  "firstNonBlankPosition"
+  "getMatchingRightPren"
+  "hasNoVowels"
+  "htcharPosition"
+  "newWordFrom"
+  "removeBackslashes"
+  "whoOwns"
+}
+
+"checkAddIndented" 		[color="#22EE22"]
+"checkDocMessage" 		[color="#22EE22"]
+"checkExtract" 			[color="#22EE22"]
+"checkGetArgs" 			[color="#22EE22"]
+"checkGetMargin" 		[color="#22EE22"]
+"checkGetParse" 		[color="#22EE22"]
+"checkGetStringBeforeRightBrace" [color="#22EE22"]
+"checkIeEg" 			[color="#22EE22"]
+"checkIndentedLines" 		[color="#22EE22"]
+"checkSkipIdentifierToken" 	[color="#22EE22"]
+"checkSkipOpToken" 		[color="#22EE22"]
+"checkSplitBrace" 		[color="#22EE22"]
+"checkTrimCommented" 		[color="#22EE22"]
+"newString2Words" 		[color="#22EE22"]
+
+{rank=same; 
+  "checkAddIndented"
+  "checkDocMessage"
+  "checkExtract"
+  "checkGetArgs"
+  "checkGetMargin"
+  "checkGetParse"
+  "checkGetStringBeforeRightBrace"
+  "checkIeEg"
+  "checkIndentedLines"
+  "checkSkipIdentifierToken"
+  "checkSkipOpToken"
+  "checkSplitBrace"
+  "checkTrimCommented"
+  "newString2Words"
+}
+
+"checkDocError" 		[color="#2222DD"]
+"checkRemoveComments" 		[color="#2222DD"]
+"checkSkipToken" 		[color="#2222DD"]
+"checkSplit2Words" 		[color="#2222DD"]
+
+{rank=same; 
+  "checkDocError"
+  "checkRemoveComments"
+  "checkSkipToken"
+  "checkSplit2Words"
+}
+
+"checkBeginEnd" 		[color="#FF6600"]
+"checkDecorate" 		[color="#FF6600"]
+"checkDecorateForHt" 		[color="#FF6600"]
+"checkDocError1" 		[color="#FF6600"]
+"checkFixCommonProblem" 	[color="#FF6600"]
+"checkGetLispFunctionName"      [color="#FF6600"]
+"checkHTargs" 			[color="#FF6600"]
+"checkRecordHash" 		[color="#FF6600"]
+"checkTexht" 			[color="#FF6600"]
+"checkTransformFirsts" 		[color="#FF6600"]
+"checkTrim" 			[color="#FF6600"]
+
+{rank=same;
+  "checkBeginEnd"
+  "checkDecorate"
+  "checkDecorateForHt"
+  "checkDocError1"
+  "checkFixCommonProblem"
+  "checkGetLispFunctionName"
+  "checkHTargs"
+  "checkRecordHash"
+  "checkTexht"
+  "checkTransformFirsts"
+  "checkTrim"
+}
+
+"checkArguments" 		[color="#0066FF"]
+"checkBalance" 			[color="#0066FF"]
+
+{rank=same;
+  "checkArguments"
+  "checkBalance"
+}
+
+"checkComments" 		[color="#006600"]
+"checkRewrite" 			[color="#006600"]
+
+{rank=same;
+  "checkComments"
+  "checkRewrite"
+}
+
+"transformAndRecheckComments" 	[color="#448822"]
+
+"transDoc" 			[color="#448822"]
+
+"transDocList"                  [color="#448822"]
+
+"finalizeDocumentation" 	[color="#448822"]
+
+"checkAddIndented" 		->  "firstNonBlankPosition"
+"checkAddIndented" 		->  "checkAddSpaceSegments"
+"checkArguments" 		->  "checkHTargs"
+"checkBalance" 			->  "checkBeginEnd"
+"checkBalance" 			->  "checkDocError"
+"checkBalance" 			->  "checkSayBracket"
+"checkBeginEnd" 		->  "checkDocError"
+"checkComments"			->  "checkGetMargin"
+"checkComments"			->  "checkTransformFirsts"
+"checkComments"			->  "checkIndentedLines"
+"checkComments"			->  "checkGetArgs"
+"checkComments"			->  "newString2Words"
+"checkComments"			->  "checkAddSpaces"
+"checkComments"			->  "checkIeEg"
+"checkComments"			->  "checkSplit2Words"
+"checkComments"			->  "checkBalance"
+"checkComments"			->  "checkArguments"
+"checkComments"			->  "checkFixCommonProblem"
+"checkComments"			->  "checkDecorate"
+"checkComments"			->  "checkAddPeriod"
+"checkDecorate" 		->  "checkDocError"
+"checkDecorate" 		->  "checkAddBackSlashes"
+"checkDecorate" 		->  "hasNoVowels"
+"checkDecorateForHt" 		->  "checkDocError"
+"checkDocError" 		->  "checkDocMessage"
+"checkDocError1" 		->  "checkDocError"
+"checkDocMessage" 		->  "whoOwns"
+"checkExtract" 			->  "firstNonBlankPosition"
+"checkFixCommonProblem" 	->  "checkDocError"
+"checkGetArgs" 			->  "firstNonBlankPosition"
+"checkGetArgs" 			->  "getMatchingRightPren"
+"checkGetLispFunctionName"      ->  "checkDocError"
+"checkGetMargin" 		->  "firstNonBlankPosition"
+"checkGetParse" 		->  "removeBackslashes"
+"checkHTargs" 			->  "checkLookForLeftBrace"
+"checkHTargs" 			->  "checkLookForRightBrace"
+"checkHTargs" 			->  "checkDocError"
+"checkIeEg" 			->  "checkIeEgfun"
+"checkIndentedLines" 		->  "firstNonBlankPosition"
+"checkIndentedLines" 		->  "checkAddSpaceSegments"
+"checkRecordHash" 		->  "checkLookForLeftBrace"
+"checkRecordHash" 		->  "checkLookForRightBrace"
+"checkRecordHash" 		->  "checkGetLispFunctionName"
+"checkRecordHash" 		->  "checkGetStringBeforeRightBrace"
+"checkRecordHash" 		->  "checkGetParse"
+"checkRecordHash" 		->  "checkDocError"
+"checkRecordHash" 		->  "checkNumOfArgs"
+"checkRecordHash" 		->  "checkIsValidType"
+"checkRemoveComments" 		->  "checkTrimCommented"
+"checkRewrite" 			->  "checkRemoveComments"
+"checkRewrite" 			->  "checkAddIndented"
+"checkRewrite" 			->  "checkGetArgs"
+"checkRewrite" 			->  "newString2Words"
+"checkRewrite" 			->  "checkAddSpaces"
+"checkRewrite" 			->  "checkSplit2Words"
+"checkRewrite" 			->  "checkAddMacros"
+"checkRewrite" 			->  "checkTexht"
+"checkRewrite" 			->  "checkArguments"
+"checkRewrite" 			->  "checkFixCommonProblem"
+"checkRewrite" 			->  "checkRecordHash"
+"checkRewrite" 			->  "checkDecorateForHt"
+"checkSkipIdentifierToken" 	->  "checkAlphabetic"
+"checkSkipOpToken" 		->  "checkAlphabetic"
+"checkSkipToken" 		->  "checkSkipIdentifierToken"
+"checkSkipToken" 		->  "checkSkipOpToken"
+"checkSplit2Words" 		->  "checkSplitBrace"
+"checkSplitBrace" 		->  "checkSplitBackslash"
+"checkSplitBrace" 		->  "checkSplitOn"
+"checkSplitBrace" 		->  "checkSplitPunctuation"
+"checkTexht" 			->  "checkDocError"
+"checkTransformFirsts" 		->  "checkSkipToken"
+"checkTransformFirsts" 		->  "checkSkipBlanks"
+"checkTransformFirsts" 		->  "getMatchingRightPren"
+"checkTransformFirsts" 		->  "checkDocError"
+"checkTrim" 			->  "checkDocError"
+"checkTrimCommented" 		->  "htcharPosition"
+"finalizeDocumentation" 	->  "transDocList"
+"newString2Words" 		->  "newWordFrom"
+"transDoc" 			->  "checkDocError1"
+"transDoc" 			->  "checkTrim"
+"transDoc" 			->  "checkExtract"
+"transDoc" 			->  "transformAndRecheckComments"
+"transDocList" 			->  "transDoc"
+"transDocList" 			->  "checkDocError"
+"transDocList" 			->  "checkDocError1"
+"transformAndRecheckComments"   ->  "checkComments"
+"transformAndRecheckComments"   ->  "checkRewrite"
+
+"compileDocumentation"          ->  "finalizeDocumentation"
+"finalizeLisplib"               ->  "finalizeDocumentation"
+}
+\end{chunk}
+
+\section{Comment Checking Layer 0 -- API}
 \defun{finalizeDocumentation}{finalizeDocumentation}
 \calls{finalizeDocumentation}{bright}
 \calls{finalizeDocumentation}{sayMSG}
@@ -19391,7 +19682,8 @@ deleting entries from u assumes that the first element is useless
 
 \end{chunk}
 
-\section{Transformation of ++ comments}
+\section{Comment Checking Layer 1}
+
 \defun{transDocList}{transDocList}
 \calls{transDocList}{sayBrightly}
 \calls{transDocList}{transDoc}
@@ -19423,6 +19715,8 @@ deleting entries from u assumes that the first element is useless
 
 \end{chunk}
 
+\section{Comment Checking Layer 2}
+
 \defun{transDoc}{transDoc}
 \calls{transDoc}{checkDocError1}
 \calls{transDoc}{checkTrim}
@@ -19475,8 +19769,12 @@ deleting entries from u assumes that the first element is useless
 
 \end{chunk}
 
+\section{Comment Checking Layer 3}
+
 \defun{transformAndRecheckComments}{transformAndRecheckComments}
 \calls{transformAndRecheckComments}{sayBrightly}
+\calls{transformAndRecheckComments}{checkComments}
+\calls{transformAndRecheckComments}{checkRewrite}
 \refsdollar{transformAndRecheckComments}{exposeFlagHeading}
 \defsdollar{transformAndRecheckComments}{checkingXmptex?}
 \defsdollar{transformAndRecheckComments}{x}
@@ -19504,429 +19802,7 @@ deleting entries from u assumes that the first element is useless
 
 \end{chunk}
 
-\defun{checkRewrite}{checkRewrite}
-\calls{checkRewrite}{checkRemoveComments}
-\calls{checkRewrite}{checkAddIndented}
-\calls{checkRewrite}{checkGetArgs}
-\calls{checkRewrite}{newString2Words}
-\calls{checkRewrite}{checkAddSpaces}
-\calls{checkRewrite}{checkSplit2Words}
-\calls{checkRewrite}{checkAddMacros}
-\calls{checkRewrite}{checkTexht}
-\calls{checkRewrite}{checkArguments}
-\calls{checkRewrite}{checkFixCommonProblem}
-\calls{checkRewrite}{checkRecordHash}
-\calls{checkRewrite}{checkDecorateForHt}
-\refsdollar{checkRewrite}{checkErrorFlag}
-\refsdollar{checkRewrite}{argl}
-\refsdollar{checkRewrite}{checkingXmptex?}
-\begin{chunk}{defun checkRewrite}
-(defun |checkRewrite| (name lines)
- (declare (ignore name))
- (prog (|$checkErrorFlag| margin w verbatim u2 okBefore u)
- (declare (special |$checkErrorFlag| |$argl| |$checkingXmptex?|))
-  (setq |$checkErrorFlag| t)
-  (setq margin 0)
-  (setq lines (|checkRemoveComments| lines))
-  (setq u lines)
-  (when |$checkingXmptex?|
-   (setq u
-    (loop for x in u
-     collect (|checkAddIndented| x margin))))
-  (setq |$argl| (|checkGetArgs| (car u)))
-  (setq u2 nil)
-  (setq verbatim nil)
-  (loop for x in u
-   do
-    (setq w (|newString2Words| x))
-    (cond
-     (verbatim
-      (cond
-       ((and w (equal (car w) "\\end{verbatim}"))
-         (setq verbatim nil)
-         (setq u2 (append u2 w)))
-       (t
-         (setq u2 (append u2 (list x))))))
-     ((and w (equal (car w) "\\begin{verbatim}"))
-      (setq verbatim t)
-      (setq u2 (append u2 w)))
-     (t (setq u2 (append u2 w)))))
-  (setq u u2)
-  (setq u (|checkAddSpaces| u))
-  (setq u (|checkSplit2Words| u))
-  (setq u (|checkAddMacros| u))
-  (setq u (|checkTexht| u))
-  (setq okBefore (null |$checkErrorFlag|))
-  (|checkArguments| u)
-  (when |$checkErrorFlag| (setq u (|checkFixCommonProblem| u)))
-  (|checkRecordHash| u)
-  (|checkDecorateForHt| u)))
-
-\end{chunk}
-
-\defun{checkAddIndented}{checkAddIndented}
-\calls{checkAddIndented}{firstNonBlankPosition}
-\calls{checkAddIndented}{strconc}
-\calls{checkAddIndented}{stringimage}
-\calls{checkAddIndented}{checkAddSpaceSegments}
-\tpdhere{Note that this function was missing without error, so may be junk}
-\begin{chunk}{defun checkAddIndented}
-(defun |checkAddIndented| (x margin)
- (let (k)
-  (setq k (|firstNonBlankPosition| x))
-  (cond
-    ((eql k -1) "\\blankline ")
-    ((eql margin k) x)
-    (t
-     (strconc "\\indented{" (stringimage (- k margin)) "}{"
-      (|checkAddSpaceSegments| (substring x k nil) 0) "}")))))
-
-\end{chunk}
-
-\defun{checkRecordHash}{checkRecordHash}
-\calls{checkRecordHash}{member}
-\calls{checkRecordHash}{checkLookForLeftBrace}
-\calls{checkRecordHash}{checkLookForRightBrace}
-\calls{checkRecordHash}{ifcdr}
-\calls{checkRecordHash}{intern}
-\calls{checkRecordHash}{hget}
-\calls{checkRecordHash}{hput}
-\calls{checkRecordHash}{checkGetLispFunctionName}
-\calls{checkRecordHash}{checkGetStringBeforeRightBrace}
-\calls{checkRecordHash}{checkGetParse}
-\calls{checkRecordHash}{checkDocError}
-\calls{checkRecordHash}{opOf}
-\calls{checkRecordHash}{spadSysChoose}
-\calls{checkRecordHash}{checkNumOfArgs}
-\calls{checkRecordHash}{checkIsValidType}
-\calls{checkRecordHash}{form2HtString}
-\calls{checkRecordHash}{getl}
-\refsdollar{checkRecordHash}{charBack}
-\refsdollar{checkRecordHash}{HTlinks}
-\refsdollar{checkRecordHash}{htHash}
-\refsdollar{checkRecordHash}{HTlisplinks}
-\refsdollar{checkRecordHash}{lispHash}
-\refsdollar{checkRecordHash}{glossHash}
-\refsdollar{checkRecordHash}{currentSysList}
-\refsdollar{checkRecordHash}{setOptions}
-\refsdollar{checkRecordHash}{sysHash}
-\refsdollar{checkRecordHash}{name}
-\refsdollar{checkRecordHash}{origin}
-\defsdollar{checkRecordHash}{sysHash}
-\defsdollar{checkRecordHash}{glossHash}
-\defsdollar{checkRecordHash}{lispHash}
-\defsdollar{checkRecordHash}{htHash}
-\begin{chunk}{defun checkRecordHash}
-(defun |checkRecordHash| (u)
- (let (p q htname entry s parse n key x)
- (declare (special |$origin| |$name| |$sysHash| |$setOptions| |$glossHash|
-                   |$currentSysList| |$lispHash| |$HTlisplinks| |$htHash|
-                   |$HTlinks| |$charBack|))
-  (loop while u
-   do
-   (setq x (car u))
-   (when (and (stringp x) (equal (elt x 0) |$charBack|))
-    (cond
-     ((and (|member| x |$HTlinks|)
-           (setq u (|checkLookForLeftBrace| (ifcdr u)))
-           (setq u (|checkLookForRightBrace| (ifcdr u)))
-           (setq u (|checkLookForLeftBrace|  (ifcdr u)))
-           (setq u (ifcdr u)))
-       (setq htname (|intern| (ifcar u)))
-       (setq entry (or (hget |$htHash| htname) (list nil)))
-       (hput |$htHash| htname
-        (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
-     ((and (|member| x |$HTlisplinks|)
-           (setq u (|checkLookForLeftBrace| (ifcdr u)))
-           (setq u (|checkLookForRightBrace| (ifcdr u)))
-           (setq u (|checkLookForLeftBrace| (ifcdr u)))
-           (setq u (ifcdr u)))
-       (setq htname
-        (|intern| 
-         (|checkGetLispFunctionName| 
-          (|checkGetStringBeforeRightBrace| u))))
-       (setq entry (or (hget |$lispHash| htname) (list nil)))
-       (hput |$lispHash| htname
-        (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
-     ((and (or (setq p (|member| x '("\\gloss" "\\spadglos")))
-               (setq q (|member| x '("\\glossSee" "\\spadglosSee"))))
-           (setq u (|checkLookForLeftBrace| (ifcdr u)))
-           (setq u (ifcdr u)))
-       (when q
-        (setq u (|checkLookForRightBrace| u))
-        (setq u (|checkLookForLeftBrace| (ifcdr u)))
-        (setq u (ifcdr u)))
-       (setq htname (|intern| (|checkGetStringBeforeRightBrace| u)))
-       (setq entry 
-        (or (hget |$glossHash| htname) (list nil)))
-            (hput |$glossHash| htname
-             (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
-     ((and (boot-equal x "\\spadsys")
-           (setq u (|checkLookForLeftBrace| (ifcdr u)))
-           (setq u (ifcdr u)))
-       (setq s (|checkGetStringBeforeRightBrace| u))
-       (when (char= (elt s 0) #\)) (setq s (substring s 1 nil)))
-       (setq parse (|checkGetParse| s))
-       (cond
-        ((null parse)
-         (|checkDocError| (list "Unparseable \\spadtype: " s)))
-        ((null (|member| (|opOf| parse) |$currentSysList|))
-         (|checkDocError| (list "Bad system command: " s)))
-        ((or (atom parse)
-             (null (and (consp parse) (eq (qcar parse) '|set|)
-                        (consp (qcdr parse)) 
-                        (eq (qcddr parse) nil))))
-         '|ok|)
-        ((null (|spadSysChoose| |$setOptions| (qcadr parse)))
-          (progn
-           (|checkDocError| (list "Incorrect \\spadsys: " s))
-           (setq entry (or (hget |$sysHash| htname) (list nil)))
-           (hput |$sysHash| htname
-            (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry))))))))
-     ((and (boot-equal x "\\spadtype")
-           (setq u (|checkLookForLeftBrace| (ifcdr u)))
-           (setq u (ifcdr u)))
-       (setq s (|checkGetStringBeforeRightBrace| u))
-       (setq parse (|checkGetParse| s))
-       (cond
-        ((null parse)
-         (|checkDocError| (list "Unparseable \\spadtype: " s)))
-        (t
-         (setq n (|checkNumOfArgs| parse))
-         (cond
-          ((null n)
-           (|checkDocError| (list "Unknown \\spadtype: " s)))
-          ((and (atom parse) (> n 0))
-           '|skip|)
-          ((null (setq key (|checkIsValidType| parse)))
-            (|checkDocError| (list "Unknown \\spadtype: " s)))
-          ((atom key) '|ok|)
-          (t
-           (|checkDocError| 
-            (list "Wrong number of arguments: " (|form2HtString| key))))))))
-     ((and (|member| x '("\\spadop" "\\keyword"))
-           (setq u (|checkLookForLeftBrace| (ifcdr u)))
-           (setq u (ifcdr u)))
-      (setq x (|intern| (|checkGetStringBeforeRightBrace| u)))
-      (when (null (or (getl x '|Led|) (getl x '|Nud|)))
-         (|checkDocError| (list "Unknown \\spadop: " x))))))
-   (pop u))
-  '|done|))
-
-\end{chunk}
-
-\defun{checkGetParse}{checkGetParse}
-\calls{checkGetParse}{ncParseFromString}
-\calls{checkGetParse}{removeBackslashes}
-\begin{chunk}{defun checkGetParse}
-(defun |checkGetParse| (s)
-  (|ncParseFromString| (|removeBackslashes| s)))
-
-\end{chunk}
-
-\defun{removeBackslashes}{removeBackslashes}
-\calls{removeBackslashes}{charPosition}
-\calls{removeBackslashes}{removeBackslashes}
-\calls{removeBackslashes}{strconc}
-\calls{removeBackslashes}{length}
-\refsdollar{removeBackslashes}{charBack}
-\begin{chunk}{defun removeBackslashes}
-(defun |removeBackslashes| (s)
- (let (k)
- (declare (special |$charBack|))
-  (cond
-   ((string= s "") "")
-   ((> (|#| s) (setq k (|charPosition| |$charBack| s 0)))
-    (if (eql k 0) 
-     (|removeBackslashes| (substring s 1 nil))
-     (strconc (substring s 0 k)
-              (|removeBackslashes| (substring s (1+ k) nil)))))
-   (t s))))
-
-\end{chunk}
-
-\defun{checkTexht}{checkTexht}
-\calls{checkTexht}{ifcar}
-\calls{checkTexht}{checkDocError}
-\calls{checkTexht}{nequal}
-\refsdollar{checkTexht}{charRbrace}
-\refsdollar{checkTexht}{charLbrace}
-\begin{chunk}{defun checkTexht}
-(defun |checkTexht| (u)
- (let (count y x acc)
- (declare (special |$charRbrace| |$charLbrace|))
-  (setq count 0)
-  (loop while u
-   do
-    (setq x (car u))
-    (when (and (string= x "\\texht") (setq u (ifcdr u)))
-       (when (null (equal (ifcar u) |$charLbrace|))
-         (|checkDocError| "First left brace after \\texht missing"))
-       ; drop first argument including braces of texht
-       (setq count 1)
-       (do ()
-           ((null (or (nequal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|)
-                      (> count 1)))
-              nil)
-        (when (equal y |$charLbrace|) (setq count (1+ count)))
-        (when (equal y |$charRbrace|) (setq count (1- count))))
-       ; drop first right brace of 1st arg
-       (setq x (ifcar (setq u (cdr u)))))
-    (when (and (string= x "\\httex") (setq u (ifcdr u))
-               (equal (ifcar u) |$charLbrace|))
-       (setq acc (cons (ifcar u) acc))
-       (do ()
-           ((null (nequal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|))
-             nil)
-        (setq acc (cons y acc)))
-       (setq acc (cons (ifcar u) acc))   ; left brace: add it
-       (setq x (ifcar (setq u (cdr u)))) ; left brace: forget it
-       (do ()
-           ((null (nequal (ifcar (setq u (cdr u))) |$charRbrace|))
-             nil)
-        '|skip|)
-       ; forget right brace; move to next character
-       (setq x (ifcar (setq u (cdr u)))))
-    (setq acc (cons x acc))
-    (pop u))
-  (nreverse acc)))
-
-\end{chunk}
-
-\defun{checkDecorateForHt}{checkDecorateForHt}
-\calls{checkDecorateForHt}{checkDocError}
-\calls{checkDecorateForHt}{member}
-\refsdollar{checkDecorateForHt}{checkingXmptex?}
-\refsdollar{checkDecorateForHt}{charRbrace}
-\refsdollar{checkDecorateForHt}{charLbrace}
-\begin{chunk}{defun checkDecorateForHt}
-(defun |checkDecorateForHt| (u)
- (let (x count spadflag)
- (declare (special |$checkingXmptex?| |$charRbrace| |$charLbrace|))
-  (setq count 0)
-  (setq spadflag nil)
-  (loop while u
-   do
-   (setq x (car u))
-   (when (equal x "\\em")
-    (if (> count 0) 
-     (setq spadflag (1- count))
-     (|checkDocError| (list "\\em must be enclosed in braces"))))
-   (cond
-    ((|member| x '("\\s" "\\spadop" "\\spadtype" "\\spad" "\\spadpaste"
-                   "\\spadcommand" "\\footnote"))
-     (setq spadflag count))
-    ((equal x |$charLbrace|)
-     (setq count (1+ count)))
-    ((equal x |$charRbrace|)
-     (setq count (1- count))
-     (when (equal spadflag count) (setq spadflag nil)))
-    ((and (null spadflag) (|member| x '("+" "*" "=" "==" "->")))
-     (when |$checkingXmptex?|
-       (|checkDocError| (list '|Symbol | x " appearing outside \\spad{}"))))
-    (t nil))
-   (when (or (equal x "$") (equal x "%"))
-      (|checkDocError| (list "Unescaped " x)))
-   (pop u))
-  u))
-
-\end{chunk}
-
-\defun{checkDocError1}{checkDocError1}
-\calls{checkDocError1}{checkDocError}
-\refsdollar{checkDocError1}{compileDocumentation}
-\begin{chunk}{defun checkDocError1}
-(defun |checkDocError1| (u)
- (declare (special |$compileDocumentation|))
- (if (and (boundp '|$compileDocumentation|) |$compileDocumentation|) 
-  nil
-  (|checkDocError| u)))
-
-\end{chunk}
-
-\defun{checkDocError}{checkDocError}
-\calls{checkDocError}{checkDocMessage}
-\calls{checkDocError}{concat}
-\calls{checkDocError}{saybrightly1}
-\calls{checkDocError}{sayBrightly}
-\refsdollar{checkDocError}{checkErrorFlag}
-\refsdollar{checkDocError}{recheckingFlag}
-\refsdollar{checkDocError}{constructorName}
-\refsdollar{checkDocError}{exposeFlag}
-\refsdollar{checkDocError}{exposeFlagHeading}
-\refsdollar{checkDocError}{outStream}
-\defsdollar{checkDocError}{checkErrorFlag}
-\defsdollar{checkDocError}{exposeFlagHeading}
-\begin{chunk}{defun checkDocError}
-(defun |checkDocError| (u)
- (let (msg)
- (declare (special |$outStream| |$exposeFlag| |$exposeFlagHeading|
-                   |$constructorName| |$recheckingFlag| |$checkErrorFlag|))
-  (setq |$checkErrorFlag| t)
-  (setq msg
-   (cond
-    (|$recheckingFlag|
-      (if |$constructorName| 
-        (|checkDocMessage| u)
-        (|concat| "> " u)))
-    (|$constructorName| (|checkDocMessage| u))
-    (t u)))
-  (when (and |$exposeFlag| |$exposeFlagHeading|)
-     (saybrightly1 |$exposeFlagHeading| |$outStream|)
-     (|sayBrightly| |$exposeFlagHeading|)
-     (setq |$exposeFlagHeading| nil))
-  (|sayBrightly| msg)
-  (when |$exposeFlag| (saybrightly1 msg |$outStream|))))
-
-\end{chunk}
-
-\defun{checkDocMessage}{checkDocMessage}
-\calls{checkDocMessage}{getdatabase}
-\calls{checkDocMessage}{whoOwns}
-\calls{checkDocMessage}{concat}
-\refsdollar{checkDocMessage}{x}
-\refsdollar{checkDocMessage}{constructorName}
-\begin{chunk}{defun checkDocMessage}
-(defun |checkDocMessage| (u)
- (let (sourcefile person middle)
- (declare (special |$constructorName| |$x|))
-  (setq sourcefile (getdatabase |$constructorName| 'sourcefile))
-  (setq person (or (|whoOwns| |$constructorName|) "---"))
-  (setq middle
-   (if (boundp '|$x|)
-    (list "(" |$x| "): ")
-    (list ": ")))
-  (|concat| person ">" sourcefile "-->" |$constructorName| middle u)))
-
-\end{chunk}
-
-\defun{whoOwns}{whoOwns}
-This function always returns nil in the current system.
-Since it has no side effects we define it to return nil.
-\calls{whoOwns}{getdatabase}
-\calls{whoOwns}{strconc}
-\calls{whoOwns}{awk}
-\calls{whoOwns}{shut}
-\refsdollar{whoOwns}{exposeFlag}
-\begin{chunk}{defun whoOwns}
-(defun |whoOwns| (con)
- (declare (ignore con))
- nil)
-; (let (filename quoteChar instream value)
-; (declare (special |$exposeFlag|))
-;  (cond
-;   ((null |$exposeFlag|) nil)
-;   (t
-;    (setq filename (getdatabase con 'sourcefile))
-;    (setq quoteChar #\")
-;    (obey (strconc "awk '$2 == " quoteChar filename quoteChar
-;                    " {print $1}' whofiles > /tmp/temp"))
-;    (setq instream (make-instream "/tmp/temp"))
-;    (setq value (unless (eofp instream) (readline instream)))
-;    (shut instream)
-;  value))))
-
-\end{chunk}
+\section{Comment Checking Layer 4}
 
 \defun{checkComments}{checkComments}
 \calls{checkComments}{checkGetMargin}
@@ -20000,57 +19876,96 @@ Since it has no side effects we define it to return nil.
 
 \end{chunk}
 
-\defun{checkSplit2Words}{checkSplit2Words}
-\calls{checkSplit2Words}{checkSplitBrace}
-\begin{chunk}{defun checkSplit2Words}
-(defun |checkSplit2Words| (u)
- (let (x verbatim z acc)
-  (setq acc nil)
-  (loop while u
+\defun{checkRewrite}{checkRewrite}
+\calls{checkRewrite}{checkRemoveComments}
+\calls{checkRewrite}{checkAddIndented}
+\calls{checkRewrite}{checkGetArgs}
+\calls{checkRewrite}{newString2Words}
+\calls{checkRewrite}{checkAddSpaces}
+\calls{checkRewrite}{checkSplit2Words}
+\calls{checkRewrite}{checkAddMacros}
+\calls{checkRewrite}{checkTexht}
+\calls{checkRewrite}{checkArguments}
+\calls{checkRewrite}{checkFixCommonProblem}
+\calls{checkRewrite}{checkRecordHash}
+\calls{checkRewrite}{checkDecorateForHt}
+\refsdollar{checkRewrite}{checkErrorFlag}
+\refsdollar{checkRewrite}{argl}
+\refsdollar{checkRewrite}{checkingXmptex?}
+\begin{chunk}{defun checkRewrite}
+(defun |checkRewrite| (name lines)
+ (declare (ignore name))
+ (prog (|$checkErrorFlag| margin w verbatim u2 okBefore u)
+ (declare (special |$checkErrorFlag| |$argl| |$checkingXmptex?|))
+  (setq |$checkErrorFlag| t)
+  (setq margin 0)
+  (setq lines (|checkRemoveComments| lines))
+  (setq u lines)
+  (when |$checkingXmptex?|
+   (setq u
+    (loop for x in u
+     collect (|checkAddIndented| x margin))))
+  (setq |$argl| (|checkGetArgs| (car u)))
+  (setq u2 nil)
+  (setq verbatim nil)
+  (loop for x in u
    do
-    (setq x (car u))
-    (setq acc
-     (cond
-      ((string= x "\\end{verbatim}")
-       (setq verbatim nil)
-       (cons x acc))
-      (verbatim (cons x acc))
-      ((string= x "\\begin{verbatim}")
-        (setq verbatim t)
-        (cons x acc))
-      ((setq z (|checkSplitBrace| x))
-        (append (nreverse z) acc))
-      (t (cons x acc))))
-    (pop u))
-  (nreverse acc)))
+    (setq w (|newString2Words| x))
+    (cond
+     (verbatim
+      (cond
+       ((and w (equal (car w) "\\end{verbatim}"))
+         (setq verbatim nil)
+         (setq u2 (append u2 w)))
+       (t
+         (setq u2 (append u2 (list x))))))
+     ((and w (equal (car w) "\\begin{verbatim}"))
+      (setq verbatim t)
+      (setq u2 (append u2 w)))
+     (t (setq u2 (append u2 w)))))
+  (setq u u2)
+  (setq u (|checkAddSpaces| u))
+  (setq u (|checkSplit2Words| u))
+  (setq u (|checkAddMacros| u))
+  (setq u (|checkTexht| u))
+  (setq okBefore (null |$checkErrorFlag|))
+  (|checkArguments| u)
+  (when |$checkErrorFlag| (setq u (|checkFixCommonProblem| u)))
+  (|checkRecordHash| u)
+  (|checkDecorateForHt| u)))
 
 \end{chunk}
 
-\defun{checkAddPeriod}{checkAddPeriod}
-\calls{checkAddPeriod}{setelt}
-\calls{checkAddPeriod}{maxindex}
-\begin{chunk}{defun checkAddPeriod}
-(defun |checkAddPeriod| (s)
- (let (m lastChar)
-  (setq m (maxindex s))
-  (setq lastChar (elt s m))
-  (cond
-   ((or (char= lastChar #\!) (char= lastChar #\?) (char= lastChar #\.)) s)
-   ((or (char= lastChar #\,) (char= lastChar #\;))
-     (setelt s m #\.) 
-     s)
-   (t s))))
+\section{Comment Checking Layer 5}
+
+\defun{checkArguments}{checkArguments}
+\calls{checkArguments}{hget}
+\calls{checkArguments}{checkHTargs}
+\refsdollar{checkArguments}{htMacroTable}
+\begin{chunk}{defun checkArguments}
+(defun |checkArguments| (u)
+ (let (x k)
+ (declare (special |$htMacroTable|))
+  (loop while u
+   do (setq x (car u))
+      (cond
+       ((null (setq k (hget |$htMacroTable| x))) '|skip|)
+       ((eql k 0) '|skip|)
+       ((> k 0) (|checkHTargs| x (cdr u) k nil))
+       (t (|checkHTargs| x (cdr u) (- k) t)))
+       (pop u))
+  u))
 
 \end{chunk}
 
 \defun{checkBalance}{checkBalance}
-\calls{checkPrenAlist}{checkBeginEnd}
-\calls{checkPrenAlist}{assoc}
-\calls{checkPrenAlist}{rassoc}
-\calls{checkPrenAlist}{nequal}
-\calls{checkPrenAlist}{checkDocError}
-\calls{checkPrenAlist}{checkSayBracket}
-\calls{checkPrenAlist}{nreverse}
+\calls{checkBalance}{checkBeginEnd}
+\calls{checkBalance}{assoc}
+\calls{checkBalance}{rassoc}
+\calls{checkBalance}{nequal}
+\calls{checkBalance}{checkDocError}
+\calls{checkBalance}{checkSayBracket}
+\calls{checkBalance}{nreverse}
 \refsdollar{checkBalance}{checkPrenAlist}
 \begin{chunk}{defun checkBalance}
 (defun |checkBalance| (u)
@@ -20086,6 +20001,8 @@ Since it has no side effects we define it to return nil.
 
 \end{chunk}
 
+\section{Comment Checking Layer 6}
+
 \defun{checkBeginEnd}{checkBeginEnd}
 \calls{checkBeginEnd}{length}
 \calls{checkBeginEnd}{hget}
@@ -20159,36 +20076,226 @@ Since it has no side effects we define it to return nil.
 
 \end{chunk}
 
-\defun{checkSayBracket}{checkSayBracket}
-\begin{chunk}{defun checkSayBracket}
-(defun |checkSayBracket| (x)
- (cond
-  ((or (char= x #\() (char= x #\))) "pren")
-  ((or (char= x #\{) (char= x #\})) "brace")
-  (t "bracket")))
+\defun{checkDecorate}{checkDecorate}
+\calls{checkDecorate}{checkDocError}
+\calls{checkDecorate}{member}
+\calls{checkDecorate}{checkAddBackSlashes}
+\calls{checkDecorate}{hasNoVowels}
+\refsdollar{checkDecorate}{checkingXmptex?}
+\refsdollar{checkDecorate}{charExclusions}
+\refsdollar{checkDecorate}{argl}
+\refsdollar{checkDecorate}{charBack}
+\refsdollar{checkDecorate}{charRbrace}
+\refsdollar{checkDecorate}{charLbrace}
+\begin{chunk}{defun checkDecorate}
+(defun |checkDecorate| (u)
+ (let (x count mathSymbolsOk spadflag verbatim v xcount acc)
+ (declare (special |$charLbrace| |$charRbrace| |$charBack| |$argl|
+                   |$charExclusions| |$checkingXmptex?|))
+  (setq count 0)
+  (loop while u 
+   do
+    (setq x (car u))
+    (cond
+     ((null verbatim)
+      (cond
+       ((string= x "\\em")
+        (cond
+         ((> count 0)
+           (setq mathSymbolsOk (1- count))
+           (setq spadflag (1- count)))
+         (t
+          (|checkDocError| (list "\\em must be enclosed in braces"))))))
+      (when (|member| x '("\\spadpaste" "\\spad" "\\spadop"))
+        (setq mathSymbolsOk count))
+      (cond
+       ((|member| x '("\\s" "\\spadtype" "\\spadsys" "\\example" "\\andexample"
+                      "\\spadop" "\\spad" "\\spadignore" "\\spadpaste"
+                      "\\spadcommand" "\\footnote"))
+         (setq spadflag count))
+       ((equal x |$charLbrace|)
+         (setq count (1+ count)))
+       ((equal x |$charRbrace|)
+         (setq count (1- count))
+         (when (eql mathSymbolsOk count) (setq mathSymbolsOk nil))
+         (when (eql spadflag count) (setq spadflag nil)))
+       ((and (null mathSymbolsOk)
+             (|member| x '("+" "*" "=" "==" "->")))
+        (when |$checkingXmptex?|
+          (|checkDocError| 
+           (list '|Symbol | x " appearing outside \\spad{}")))))))
+    (setq acc
+     (cond
+      ((string= x "\\end{verbatim}")
+        (setq verbatim nil)
+        (cons x acc))
+      (verbatim (cons x acc))
+      ((string= x "\\begin{verbatim}")
+       (setq verbatim t)
+       (cons x acc))
+      ((and (string= x "\\begin")
+            (equal (car (setq v (ifcdr u))) |$charLbrace|)
+            (string= (car (setq v (ifcdr v))) "detail")
+            (equal (car (setq v (ifcdr v))) |$charRbrace|))
+        (setq u v)
+        (cons "\\blankline " acc))
+      ((and (string= x "\\end")
+            (equal (car (setq v (ifcdr u))) |$charLbrace|)
+            (string= (car (setq v (ifcdr v))) "detail")
+            (equal (car (setq v (ifcdr v))) |$charRbrace|))
+        (setq u v) 
+        acc)
+      ((or (char= x #\$) (string= x "$"))
+        (cons "\\$" acc))
+      ((or (char= x #\%) (string= x "%"))
+        (cons "\\%" acc))
+      ((or (char= x #\,) (string= x ","))
+        (cons ",{}" acc))
+      ((string= x "\\spad")
+        (cons "\\spad" acc))
+      ((and (stringp x) (digitp (elt x 0)))
+        (cons x acc))
+      ((and (null spadflag)
+            (or (and (charp x) 
+                     (alpha-char-p x) 
+                     (null (member x |$charExclusions|)))
+                (|member| x |$argl|)))
+        (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
+      ((and (null spadflag)
+            (or (and (stringp x)
+                     (null (equal (elt x 0) |$charBack|))
+                     (digitp (elt x (maxindex x))))
+                (|member| x '("true" "false"))))
+        (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
+      (t
+       (setq xcount (|#| x))
+       (cond
+        ((and (eql xcount 3)
+              (char= (elt x 1) #\t)
+              (char= (elt x 2) #\h))
+          (cons "th" (cons |$charRbrace|
+            (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
+        ((and (eql xcount 4)
+              (char= (elt x 1) #\-)
+              (char= (elt x 2) #\t)
+              (char= (elt x 3) #\h))
+         (cons "-th" (cons |$charRbrace|
+           (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
+        ((or (and (eql xcount 2)
+                  (char= (elt x 1) #\i))
+             (and (null spadflag)
+                  (> xcount 0)
+                  (> 4 xcount)
+                  (null (|member| x '("th" "rd" "st")))
+                  (|hasNoVowels| x)))
+         (cons |$charRbrace|
+           (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
+        (t
+         (cons (|checkAddBackSlashes| x) acc))))))
+    (setq u (cdr u)))
+  (nreverse acc)))
 
 \end{chunk}
 
-\defun{checkArguments}{checkArguments}
-\calls{checkArguments}{hget}
-\calls{checkArguments}{checkHTargs}
-\refsdollar{checkArguments}{htMacroTable}
-\begin{chunk}{defun checkArguments}
-(defun |checkArguments| (u)
- (let (x k)
- (declare (special |$htMacroTable|))
+\defun{checkDecorateForHt}{checkDecorateForHt}
+\calls{checkDecorateForHt}{checkDocError}
+\calls{checkDecorateForHt}{member}
+\refsdollar{checkDecorateForHt}{checkingXmptex?}
+\refsdollar{checkDecorateForHt}{charRbrace}
+\refsdollar{checkDecorateForHt}{charLbrace}
+\begin{chunk}{defun checkDecorateForHt}
+(defun |checkDecorateForHt| (u)
+ (let (x count spadflag)
+ (declare (special |$checkingXmptex?| |$charRbrace| |$charLbrace|))
+  (setq count 0)
+  (setq spadflag nil)
   (loop while u
-   do (setq x (car u))
-      (cond
-       ((null (setq k (hget |$htMacroTable| x))) '|skip|)
-       ((eql k 0) '|skip|)
-       ((> k 0) (|checkHTargs| x (cdr u) k nil))
-       (t (|checkHTargs| x (cdr u) (- k) t)))
-       (pop u))
+   do
+   (setq x (car u))
+   (when (equal x "\\em")
+    (if (> count 0) 
+     (setq spadflag (1- count))
+     (|checkDocError| (list "\\em must be enclosed in braces"))))
+   (cond
+    ((|member| x '("\\s" "\\spadop" "\\spadtype" "\\spad" "\\spadpaste"
+                   "\\spadcommand" "\\footnote"))
+     (setq spadflag count))
+    ((equal x |$charLbrace|)
+     (setq count (1+ count)))
+    ((equal x |$charRbrace|)
+     (setq count (1- count))
+     (when (equal spadflag count) (setq spadflag nil)))
+    ((and (null spadflag) (|member| x '("+" "*" "=" "==" "->")))
+     (when |$checkingXmptex?|
+       (|checkDocError| (list '|Symbol | x " appearing outside \\spad{}"))))
+    (t nil))
+   (when (or (equal x "$") (equal x "%"))
+      (|checkDocError| (list "Unescaped " x)))
+   (pop u))
   u))
 
 \end{chunk}
 
+\defun{checkDocError1}{checkDocError1}
+\calls{checkDocError1}{checkDocError}
+\refsdollar{checkDocError1}{compileDocumentation}
+\begin{chunk}{defun checkDocError1}
+(defun |checkDocError1| (u)
+ (declare (special |$compileDocumentation|))
+ (if (and (boundp '|$compileDocumentation|) |$compileDocumentation|) 
+  nil
+  (|checkDocError| u)))
+
+\end{chunk}
+
+\defun{checkFixCommonProblem}{checkFixCommonProblem}
+\calls{checkFixCommonProblem}{member}
+\calls{checkFixCommonProblem}{ifcar}
+\calls{checkFixCommonProblem}{ifcdr}
+\calls{checkFixCommonProblem}{nequal}
+\calls{checkFixCommonProblem}{checkDocError}
+\refsdollar{checkFixCommonProblem}{charLbrace}
+\refsdollar{checkFixCommonProblem}{HTspadmacros}
+\begin{chunk}{defun checkFixCommonProblem}
+(defun |checkFixCommonProblem| (u)
+ (let (x next acc)
+ (declare (special |$charLbrace| |$HTspadmacros|))
+  (loop while u
+   do
+    (setq x (car u))
+    (cond
+     ((and (equal x |$charLbrace|)
+           (|member| (setq next (ifcar (cdr u))) |$HTspadmacros|)
+           (nequal (ifcar (ifcdr (cdr u))) |$charLbrace|))
+       (|checkDocError| (list "Reversing " next " and left brace"))
+       (setq acc (cons |$charLbrace| (cons next acc)))
+       (setq u (cddr u)))
+     (t
+      (setq acc (cons x acc))
+      (setq u (cdr u)))))
+  (nreverse acc)))
+
+\end{chunk}
+
+\defun{checkGetLispFunctionName}{checkGetLispFunctionName}
+\calls{checkGetLispFunctionName}{charPosition}
+\calls{checkGetLispFunctionName}{checkDocError}
+\begin{chunk}{defun checkGetLispFunctionName}
+(defun |checkGetLispFunctionName| (s)
+ (let (n k j)
+  (setq n (|#| s))
+  (cond
+   ((and (setq k (|charPosition| #\| s 1))
+         (> n k)
+         (setq j (|charPosition| #\| s (1+ k)))
+         (> n j))
+     (substring s (1+ k) (1- (- j k))))
+   (t
+    (|checkDocError| (cons "Ill-formed lisp expression : " (list s)))
+    '|illformed|))))
+
+\end{chunk}
+
 \defun{checkHTargs}{checkHTargs}
 Note that {\tt u} should start with an open brace.
 \calls{checkHTargs}{checkLookForLeftBrace}
@@ -20209,43 +20316,183 @@ Note that {\tt u} should start with an open brace.
 
 \end{chunk}
 
-\defun{checkLookForLeftBrace}{checkLookForLeftBrace}
-\calls{checkLookForLeftBrace}{nequal}
-\refsdollar{checkLookForLeftBrace}{charBlank}
-\refsdollar{checkLookForLeftBrace}{charLbrace}
-\begin{chunk}{defun checkLookForLeftBrace}
-(defun |checkLookForLeftBrace| (u)
- (declare (special |$charBlank| |$charLbrace|))
+\defun{checkRecordHash}{checkRecordHash}
+\calls{checkRecordHash}{member}
+\calls{checkRecordHash}{checkLookForLeftBrace}
+\calls{checkRecordHash}{checkLookForRightBrace}
+\calls{checkRecordHash}{ifcdr}
+\calls{checkRecordHash}{intern}
+\calls{checkRecordHash}{hget}
+\calls{checkRecordHash}{hput}
+\calls{checkRecordHash}{checkGetLispFunctionName}
+\calls{checkRecordHash}{checkGetStringBeforeRightBrace}
+\calls{checkRecordHash}{checkGetParse}
+\calls{checkRecordHash}{checkDocError}
+\calls{checkRecordHash}{opOf}
+\calls{checkRecordHash}{spadSysChoose}
+\calls{checkRecordHash}{checkNumOfArgs}
+\calls{checkRecordHash}{checkIsValidType}
+\calls{checkRecordHash}{form2HtString}
+\calls{checkRecordHash}{getl}
+\refsdollar{checkRecordHash}{charBack}
+\refsdollar{checkRecordHash}{HTlinks}
+\refsdollar{checkRecordHash}{htHash}
+\refsdollar{checkRecordHash}{HTlisplinks}
+\refsdollar{checkRecordHash}{lispHash}
+\refsdollar{checkRecordHash}{glossHash}
+\refsdollar{checkRecordHash}{currentSysList}
+\refsdollar{checkRecordHash}{setOptions}
+\refsdollar{checkRecordHash}{sysHash}
+\refsdollar{checkRecordHash}{name}
+\refsdollar{checkRecordHash}{origin}
+\defsdollar{checkRecordHash}{sysHash}
+\defsdollar{checkRecordHash}{glossHash}
+\defsdollar{checkRecordHash}{lispHash}
+\defsdollar{checkRecordHash}{htHash}
+\begin{chunk}{defun checkRecordHash}
+(defun |checkRecordHash| (u)
+ (let (p q htname entry s parse n key x)
+ (declare (special |$origin| |$name| |$sysHash| |$setOptions| |$glossHash|
+                   |$currentSysList| |$lispHash| |$HTlisplinks| |$htHash|
+                   |$HTlinks| |$charBack|))
   (loop while u
    do
+   (setq x (car u))
+   (when (and (stringp x) (equal (elt x 0) |$charBack|))
     (cond
-     ((equal (car u) |$charLbrace|) (return (car u)))
-     ((nequal (car u) |$charBlank|) (return nil))
-     (t (pop u))))
-  u)
+     ((and (|member| x |$HTlinks|)
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (|checkLookForRightBrace| (ifcdr u)))
+           (setq u (|checkLookForLeftBrace|  (ifcdr u)))
+           (setq u (ifcdr u)))
+       (setq htname (|intern| (ifcar u)))
+       (setq entry (or (hget |$htHash| htname) (list nil)))
+       (hput |$htHash| htname
+        (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
+     ((and (|member| x |$HTlisplinks|)
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (|checkLookForRightBrace| (ifcdr u)))
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+       (setq htname
+        (|intern| 
+         (|checkGetLispFunctionName| 
+          (|checkGetStringBeforeRightBrace| u))))
+       (setq entry (or (hget |$lispHash| htname) (list nil)))
+       (hput |$lispHash| htname
+        (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
+     ((and (or (setq p (|member| x '("\\gloss" "\\spadglos")))
+               (setq q (|member| x '("\\glossSee" "\\spadglosSee"))))
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+       (when q
+        (setq u (|checkLookForRightBrace| u))
+        (setq u (|checkLookForLeftBrace| (ifcdr u)))
+        (setq u (ifcdr u)))
+       (setq htname (|intern| (|checkGetStringBeforeRightBrace| u)))
+       (setq entry 
+        (or (hget |$glossHash| htname) (list nil)))
+            (hput |$glossHash| htname
+             (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry)))))
+     ((and (boot-equal x "\\spadsys")
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+       (setq s (|checkGetStringBeforeRightBrace| u))
+       (when (char= (elt s 0) #\)) (setq s (substring s 1 nil)))
+       (setq parse (|checkGetParse| s))
+       (cond
+        ((null parse)
+         (|checkDocError| (list "Unparseable \\spadtype: " s)))
+        ((null (|member| (|opOf| parse) |$currentSysList|))
+         (|checkDocError| (list "Bad system command: " s)))
+        ((or (atom parse)
+             (null (and (consp parse) (eq (qcar parse) '|set|)
+                        (consp (qcdr parse)) 
+                        (eq (qcddr parse) nil))))
+         '|ok|)
+        ((null (|spadSysChoose| |$setOptions| (qcadr parse)))
+          (progn
+           (|checkDocError| (list "Incorrect \\spadsys: " s))
+           (setq entry (or (hget |$sysHash| htname) (list nil)))
+           (hput |$sysHash| htname
+            (cons (car entry) (cons (cons |$name| |$origin|) (cdr entry))))))))
+     ((and (boot-equal x "\\spadtype")
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+       (setq s (|checkGetStringBeforeRightBrace| u))
+       (setq parse (|checkGetParse| s))
+       (cond
+        ((null parse)
+         (|checkDocError| (list "Unparseable \\spadtype: " s)))
+        (t
+         (setq n (|checkNumOfArgs| parse))
+         (cond
+          ((null n)
+           (|checkDocError| (list "Unknown \\spadtype: " s)))
+          ((and (atom parse) (> n 0))
+           '|skip|)
+          ((null (setq key (|checkIsValidType| parse)))
+            (|checkDocError| (list "Unknown \\spadtype: " s)))
+          ((atom key) '|ok|)
+          (t
+           (|checkDocError| 
+            (list "Wrong number of arguments: " (|form2HtString| key))))))))
+     ((and (|member| x '("\\spadop" "\\keyword"))
+           (setq u (|checkLookForLeftBrace| (ifcdr u)))
+           (setq u (ifcdr u)))
+      (setq x (|intern| (|checkGetStringBeforeRightBrace| u)))
+      (when (null (or (getl x '|Led|) (getl x '|Nud|)))
+         (|checkDocError| (list "Unknown \\spadop: " x))))))
+   (pop u))
+  '|done|))
 
 \end{chunk}
 
-\defun{checkLookForRightBrace}{checkLookForRightBrace}
-This returns a line beginning with right brace
-\refsdollar{checkLookForRightBrace}{charLbrace}
-\refsdollar{checkLookForRightBrace}{charRbrace}
-\begin{chunk}{defun checkLookForRightBrace}
-(defun |checkLookForRightBrace| (u)
- (let (found count)
- (declare (special |$charLbrace| |$charRbrace|))
+\defun{checkTexht}{checkTexht}
+\calls{checkTexht}{ifcdr}
+\calls{checkTexht}{ifcar}
+\calls{checkTexht}{checkDocError}
+\calls{checkTexht}{nequal}
+\refsdollar{checkTexht}{charRbrace}
+\refsdollar{checkTexht}{charLbrace}
+\begin{chunk}{defun checkTexht}
+(defun |checkTexht| (u)
+ (let (count y x acc)
+ (declare (special |$charRbrace| |$charLbrace|))
   (setq count 0)
   (loop while u 
    do
-   (cond
-    ((equal (car u) |$charRbrace|)
-     (if (eql count 0) 
-      (return (setq found u))
-      (setq count (1- count))))
-    ((equal (car u) |$charLbrace|)
-      (setq count (1+ count))))
-    (pop u))
-  found))
+    (setq x (car u))
+    (when (and (string= x "\\texht") (setq u (ifcdr u)))
+     (unless  (equal (ifcar u) |$charLbrace|)
+       (|checkDocError| "First left brace after \\texht missing"))
+     ; drop first argument including braces of \texht
+     (setq count 1)
+     (loop while (or (nequal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|)
+                     (> count 1))
+     do
+       (when (equal y |$charLbrace|) (setq count (1+ count)))
+       (when (equal y |$charRbrace|) (setq count (1- count))))
+     ; drop first right brace of 1st arg
+     (setq x (ifcar (setq u (cdr u)))))
+    (when (and (string= x "\\httex")
+               (setq u (ifcdr u))
+               (equal (ifcar u) |$charLbrace|))
+       ; left  brace: add it
+       (setq acc (cons (ifcar u) acc))
+       (loop while (nequal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|)
+         do (setq acc (cons y acc)))
+       ; right brace: add it
+       (setq acc (cons (ifcar u) acc))
+       ; left brace:  forget it
+       (setq x (ifcar (setq u (cdr u))))
+       (loop while (nequal (ifcar (setq u (cdr u))) |$charRbrace|)
+        do '|skip|)
+       ; forget right brace: move to next char
+       (setq x (ifcar (setq u (cdr u)))))
+    (setq acc (cons x acc))
+    (setq u (cdr u)))
+  (nreverse acc)))
 
 \end{chunk}
 
@@ -20381,35 +20628,93 @@ This returns a line beginning with right brace
 
 \end{chunk}
 
-\defun{checkSkipBlanks}{checkSkipBlanks}
-\refsdollar{checkSkipBlanks}{charBlank}
-\begin{chunk}{defun checkSkipBlanks}
-(defun |checkSkipBlanks| (u i m)
- (declare (special |$charBlank|))
-  (do ()
-      ((null (and (> m i) (equal (elt u i) |$charBlank|))) nil)
-   (setq i (1+ i)))
-  (unless (= i m) i))
+\defun{checkTrim}{checkTrim}
+\calls{checkTrim}{charPosition}
+\calls{checkTrim}{nequal}
+\calls{checkTrim}{systemError}
+\calls{checkTrim}{checkDocError}
+\refsdollar{checkTrim}{charBlank}
+\refsdollar{checkTrim}{x}
+\refsdollar{checkTrim}{charPlus}
+\begin{chunk}{defun checkTrim}
+(defun |checkTrim| (|$x| lines)
+ (declare (special |$x|))
+ (labels (
+  (trim (s)
+   (let (k)
+   (declare (special |$charBlank|))
+    (setq k (wherePP s))
+    (substring s (+ k 2) nil)))
+  (wherePP (u)
+   (let (k)
+   (declare (special |$charPlus|))
+    (setq k (|charPosition| |$charPlus| u 0))
+    (if (or (eql k (|#| u))
+            (nequal (|charPosition| |$charPlus| u (1+ k)) (1+ k)))
+      (|systemError| " Improper comment found")
+      k))))
+ (let (j s)
+  (setq s  (list (wherePP (car lines))))
+  (loop for x in (rest lines)
+   do
+    (setq j (wherePP x))
+    (unless (member j s)
+      (|checkDocError| (list |$x| " has varying indentation levels"))
+      (setq s (cons j s))))
+  (loop for y in lines
+   collect (trim y)))))
 
 \end{chunk}
 
-\defun{checkSkipIdentifierToken}{checkSkipIdentifierToken}
-\calls{checkSkipIdentifierToken}{checkAlphabetic}
-\begin{chunk}{defun checkSkipIdentifierToken}
-(defun |checkSkipIdentifierToken| (u i m)
- (do ()
-   ((null (and (> m i) (|checkAlphabetic| (elt u i)))) nil)
-  (setq i (1+ i)))
-  (unless (= i m) i))
+\section{Comment Checking Layer 7}
+
+\defun{checkDocError}{checkDocError}
+\calls{checkDocError}{checkDocMessage}
+\calls{checkDocError}{concat}
+\calls{checkDocError}{saybrightly1}
+\calls{checkDocError}{sayBrightly}
+\refsdollar{checkDocError}{checkErrorFlag}
+\refsdollar{checkDocError}{recheckingFlag}
+\refsdollar{checkDocError}{constructorName}
+\refsdollar{checkDocError}{exposeFlag}
+\refsdollar{checkDocError}{exposeFlagHeading}
+\refsdollar{checkDocError}{outStream}
+\defsdollar{checkDocError}{checkErrorFlag}
+\defsdollar{checkDocError}{exposeFlagHeading}
+\begin{chunk}{defun checkDocError}
+(defun |checkDocError| (u)
+ (let (msg)
+ (declare (special |$outStream| |$exposeFlag| |$exposeFlagHeading|
+                   |$constructorName| |$recheckingFlag| |$checkErrorFlag|))
+  (setq |$checkErrorFlag| t)
+  (setq msg
+   (cond
+    (|$recheckingFlag|
+      (if |$constructorName| 
+        (|checkDocMessage| u)
+        (|concat| "> " u)))
+    (|$constructorName| (|checkDocMessage| u))
+    (t u)))
+  (when (and |$exposeFlag| |$exposeFlagHeading|)
+     (saybrightly1 |$exposeFlagHeading| |$outStream|)
+     (|sayBrightly| |$exposeFlagHeading|)
+     (setq |$exposeFlagHeading| nil))
+  (|sayBrightly| msg)
+  (when |$exposeFlag| (saybrightly1 msg |$outStream|))))
 
 \end{chunk}
 
-\defun{checkAlphabetic}{checkAlphabetic}
-\refsdollar{checkAlphabetic}{charIdentifierEndings}
-\begin{chunk}{defun checkAlphabetic}
-(defun |checkAlphabetic| (c)
- (declare (special |$charIdentifierEndings|))
- (or (alpha-char-p c) (digitp c) (member c |$charIdentifierEndings|)))
+\defun{checkRemoveComments}{checkRemoveComments}
+\calls{checkRemoveComments}{checkTrimCommented}
+\begin{chunk}{defun checkRemoveComments}
+(defun |checkRemoveComments| (lines)
+ (let (line acc)
+  (loop while lines
+   do
+   (setq line (|checkTrimCommented| (car lines)))
+   (when (>= (|firstNonBlankPosition| line) 0) (push line acc))
+   (pop lines))
+  (nreverse acc)))
 
 \end{chunk}
 
@@ -20424,41 +20729,151 @@ This returns a line beginning with right brace
 
 \end{chunk}
 
-\defun{checkSkipOpToken}{checkSkipOpToken}
-\calls{checkSkipOpToken}{checkAlphabetic}
-\calls{checkSkipOpToken}{member}
-\refsdollar{checkSkipOpToken}{charDelimiters}
-\begin{chunk}{defun checkSkipOpToken}
-(defun |checkSkipOpToken| (u i m)
- (declare (special |$charDelimiters|))
-  (do () 
-      ((null (and (> m i)
-                  (null (|checkAlphabetic| (elt u i)))
-                  (null (|member| (elt u i) |$charDelimiters|))))
-         nil)
-   (setq i (1+ i)))
-   (unless (= i m) i))
+\defun{checkSplit2Words}{checkSplit2Words}
+\calls{checkSplit2Words}{checkSplitBrace}
+\begin{chunk}{defun checkSplit2Words}
+(defun |checkSplit2Words| (u)
+ (let (x verbatim z acc)
+  (setq acc nil)
+  (loop while u
+   do
+    (setq x (car u))
+    (setq acc
+     (cond
+      ((string= x "\\end{verbatim}")
+       (setq verbatim nil)
+       (cons x acc))
+      (verbatim (cons x acc))
+      ((string= x "\\begin{verbatim}")
+        (setq verbatim t)
+        (cons x acc))
+      ((setq z (|checkSplitBrace| x))
+        (append (nreverse z) acc))
+      (t (cons x acc))))
+    (pop u))
+  (nreverse acc)))
 
 \end{chunk}
 
-\defun{getMatchingRightPren}{getMatchingRightPren}
-\calls{getMatchingRightPren}{maxindex}
-\begin{chunk}{defun getMatchingRightPren}
-(defun |getMatchingRightPren| (u j open close)
- (let (m c found count)
-  (setq count 0)
-  (setq m (maxindex u))
-  (loop for i from j to m
+\section{Comment Checking Layer 8}
+
+\defun{checkAddIndented}{checkAddIndented}
+\calls{checkAddIndented}{firstNonBlankPosition}
+\calls{checkAddIndented}{strconc}
+\calls{checkAddIndented}{stringimage}
+\calls{checkAddIndented}{checkAddSpaceSegments}
+\tpdhere{Note that this function was missing without error, so may be junk}
+\begin{chunk}{defun checkAddIndented}
+(defun |checkAddIndented| (x margin)
+ (let (k)
+  (setq k (|firstNonBlankPosition| x))
+  (cond
+    ((eql k -1) "\\blankline ")
+    ((eql margin k) x)
+    (t
+     (strconc "\\indented{" (stringimage (- k margin)) "}{"
+      (|checkAddSpaceSegments| (substring x k nil) 0) "}")))))
+
+\end{chunk}
+
+\defun{checkDocMessage}{checkDocMessage}
+\calls{checkDocMessage}{getdatabase}
+\calls{checkDocMessage}{whoOwns}
+\calls{checkDocMessage}{concat}
+\refsdollar{checkDocMessage}{x}
+\refsdollar{checkDocMessage}{constructorName}
+\begin{chunk}{defun checkDocMessage}
+(defun |checkDocMessage| (u)
+ (let (sourcefile person middle)
+ (declare (special |$constructorName| |$x|))
+  (setq sourcefile (getdatabase |$constructorName| 'sourcefile))
+  (setq person (or (|whoOwns| |$constructorName|) "---"))
+  (setq middle
+   (if (boundp '|$x|)
+    (list "(" |$x| "): ")
+    (list ": ")))
+  (|concat| person ">" sourcefile "-->" |$constructorName| middle u)))
+
+\end{chunk}
+
+\defun{checkExtract}{checkExtract}
+\calls{checkExtract}{firstNonBlankPosition}
+\calls{checkExtract}{substring?}
+\calls{checkExtract}{charPosition}
+\calls{checkExtract}{length}
+\begin{chunk}{defun checkExtract}
+(defun |checkExtract| (header lines)
+ (let (line u margin firstLines m k j i acc)
+  (loop while lines
    do
-    (setq c (elt u i))
+    (setq line (car lines))
+    (setq k (|firstNonBlankPosition| line)) ; gives margin of description
+    (if (|substring?| header line k) 
+      (return nil)
+      (setq lines (cdr lines))))
+  (cond
+   ((null lines) nil)
+   (t
+    (setq u (car lines))
+    (setq j (|charPosition| #\: u k))
+    (setq margin k)
+    (setq firstLines
+     (if (nequal (setq k (|firstNonBlankPosition| u (1+ j))) -1)
+       (cons (substring u (1+ j) nil) (cdr lines))
+       (cdr lines)))
+    ; now look for another header; if found skip all rest of these lines
+    (setq acc nil)
+    (loop for line in firstLines
+     do
+      (setq m (|#| line))
+      (cond
+       ((eql (setq k (|firstNonBlankPosition| line)) -1) '|skip|)
+       ((> k margin) '|skip|)
+       ((null (upper-case-p (elt line k))) '|skip|)
+       ((equal (setq j (|charPosition| #\: line k)) m) '|skip|)
+       ((> j (setq i (|charPosition| #\space line (1+ k)))) '|skip|)
+       (t (return nil)))
+      (setq acc (cons line acc)))
+    (nreverse acc)))))
+
+\end{chunk}
+
+\defun{checkGetArgs}{checkGetArgs}
+\calls{checkGetArgs}{maxindex}
+\calls{checkGetArgs}{firstNonBlankPosition}
+\calls{checkGetArgs}{checkGetArgs}
+\calls{checkGetArgs}{stringPrefix?}
+\calls{checkGetArgs}{getMatchingRightPren}
+\calls{checkGetArgs}{charPosition}
+\calls{checkGetArgs}{nequal}
+\calls{checkGetArgs}{trimString}
+\refsdollar{checkGetArgs}{charComma}
+\begin{chunk}{defun checkGetArgs}
+(defun |checkGetArgs| (u)
+ (let (m k acc i)
+ (declare (special |$charComma|))
+  (cond
+   ((null (stringp u)) nil)
+   (t
+    (setq m (maxindex u))
+    (setq k (|firstNonBlankPosition| u))
     (cond
-     ((equal c close)
-      (if (eql count 0) 
-       (return (setq found i))
-       (setq count (1- count))))
-     ((equal c open)
-       (setq count (1+ count)))))
-  found))
+     ((> k 0)
+      (|checkGetArgs| (substring u k nil)))
+     ((|stringPrefix?| "\\spad{" u)
+      (setq k (or (|getMatchingRightPren| u 6 #\{ #\}) m))
+      (|checkGetArgs| (substring u 6 (- k 6))))
+     ((> (setq i (|charPosition| #\( u 0)) m)
+      nil)
+     ((nequal (elt u m) #\))
+      nil)
+     (t
+      (do ()
+          ((null (> m (setq k (|charPosition| |$charComma| u (1+ i))))) nil)
+        (setq acc 
+         (cons (|trimString| (substring u (1+ i) (1- (- k i)))) acc))
+        (setq i k))
+      (nreverse (cons (substring u (1+ i) (1- (- m i))) acc))))))))
 
 \end{chunk}
 
@@ -20477,18 +20892,32 @@ This returns a line beginning with right brace
 
 \end{chunk}
 
-\defun{firstNonBlankPosition}{firstNonBlankPosition}
-\calls{firstNonBlankPosition}{nequal}
-\calls{firstNonBlankPosition}{maxindex}
-\begin{chunk}{defun firstNonBlankPosition}
-(defun |firstNonBlankPosition| (&rest therest)
- (let ((x (car therest)) (options (cdr therest)) start k)
- (declare (special |$charBlank|))
-  (setq start (or (ifcar options) 0))
-  (setq k -1)
-  (loop for i from start to (maxindex x)
-   do (when (nequal (elt x i) |$charBlank|) (return (setq k i))))
-  k))
+\defun{checkGetParse}{checkGetParse}
+\calls{checkGetParse}{ncParseFromString}
+\calls{checkGetParse}{removeBackslashes}
+\begin{chunk}{defun checkGetParse}
+(defun |checkGetParse| (s)
+  (|ncParseFromString| (|removeBackslashes| s)))
+
+\end{chunk}
+
+\defun{checkGetStringBeforeRightBrace}{checkGetStringBeforeRightBrace}
+\begin{chunk}{defun checkGetStringBeforeRightBrace}
+(defun |checkGetStringBeforeRightBrace| (u)
+ (prog (x acc)
+  (return
+   (loop while u
+    do
+     (setq x (car u))
+     (cond
+      ((equal x |$charRbrace|)
+       (let ((result ""))
+        (loop for item in acc
+         do (setq result (concatenate 'string item result)))
+        (return result)))
+      (t
+       (setq acc (cons x acc))
+       (setq u (cdr u))))))))
 
 \end{chunk}
 
@@ -20520,6 +20949,299 @@ This returns a line beginning with right brace
 
 \end{chunk}
 
+\defun{checkIndentedLines}{checkIndentedLines}
+\calls{checkIndentedLines}{firstNonBlankPosition}
+\calls{checkIndentedLines}{strconc}
+\calls{checkIndentedLines}{checkAddSpaceSegments}
+\refsdollar{checkIndentedLines}{charFauxNewline}
+\begin{chunk}{defun checkIndentedLines}
+(defun |checkIndentedLines| (u margin)
+ (let (k s verbatim u2)
+ (declare (special |$charFauxNewline|))
+  (loop for x in u
+   do
+    (setq k (|firstNonBlankPosition| x))
+    (cond
+     ((eql k -1)
+      (if verbatim 
+       (setq u2 (append u2 (list |$charFauxNewline|)))
+       (setq u2 (append u2 (list "\\blankline ")))))
+     (t 
+      (setq s (substring x k nil))
+      (cond
+       ((string= s "\\begin{verbatim}")
+         (setq verbatim t)
+         (setq u2 (append u2 (list s))))
+       ((string= s "\\end{verbatim}")
+         (setq verbatim nil)
+         (setq u2 (append u2 (list s))))
+       (verbatim
+         (setq u2 (append u2 (list (substring x margin nil)))))
+       ((eql margin k)
+         (setq u2 (append u2 (list s))))
+       (t
+         (setq u2 
+          (append u2 
+           (list (strconc "\\indented{" (stringimage (- k margin))
+                          "}{" (|checkAddSpaceSegments| s 0) "}")))))))))
+  u2))
+
+\end{chunk}
+
+\defun{checkSkipIdentifierToken}{checkSkipIdentifierToken}
+\calls{checkSkipIdentifierToken}{checkAlphabetic}
+\begin{chunk}{defun checkSkipIdentifierToken}
+(defun |checkSkipIdentifierToken| (u i m)
+ (do ()
+   ((null (and (> m i) (|checkAlphabetic| (elt u i)))) nil)
+  (setq i (1+ i)))
+  (unless (= i m) i))
+
+\end{chunk}
+
+\defun{checkSkipOpToken}{checkSkipOpToken}
+\calls{checkSkipOpToken}{checkAlphabetic}
+\calls{checkSkipOpToken}{member}
+\refsdollar{checkSkipOpToken}{charDelimiters}
+\begin{chunk}{defun checkSkipOpToken}
+(defun |checkSkipOpToken| (u i m)
+ (declare (special |$charDelimiters|))
+  (do () 
+      ((null (and (> m i)
+                  (null (|checkAlphabetic| (elt u i)))
+                  (null (|member| (elt u i) |$charDelimiters|))))
+         nil)
+   (setq i (1+ i)))
+   (unless (= i m) i))
+
+\end{chunk}
+
+\defun{checkSplitBrace}{checkSplitBrace}
+\calls{checkSplitBrace}{charp}
+\calls{checkSplitBrace}{length}
+\calls{checkSplitBrace}{checkSplitBackslash}
+\calls{checkSplitBrace}{checkSplitBrace}
+\calls{checkSplitBrace}{checkSplitOn}
+\calls{checkSplitBrace}{checkSplitPunctuation}
+\begin{chunk}{defun checkSplitBrace}
+(defun |checkSplitBrace| (x)
+ (let (m u)
+  (cond
+   ((charp x) (list x))
+   ((eql (|#| x) 1) (list (elt x 0)))
+   ((and (setq u (|checkSplitBackslash| x)) (cdr u))
+     (let (result)
+      (loop for y in u do (append result (|checkSplitBrace| y)))
+      result))
+    (t
+      (setq m (maxindex x))
+      (cond
+        ((and (setq u (|checkSplitOn| x)) (cdr u))
+         (let (result)
+          (loop for y in u do (append result (|checkSplitBrace| y)))
+          result))
+        ((and (setq u (|checkSplitPunctuation| x)) (cdr u))
+         (let (result)
+          (loop for y in u do (append result (|checkSplitBrace| y)))
+          result))
+        (t (list x)))))))
+
+\end{chunk}
+
+\defun{checkTrimCommented}{checkTrimCommented}
+\calls{checkTrimCommented}{length}
+\calls{checkTrimCommented}{htcharPosition}
+\calls{checkTrimCommented}{nequal}
+\begin{chunk}{defun checkTrimCommented}
+(defun |checkTrimCommented| (line)
+ (let (n k)
+  (setq n (|#| line))
+  (setq k (|htcharPosition| (|char| '%) line 0))
+  (cond
+   ((eql k 0) "")
+   ((or (>= k (1- n)) (nequal (elt line (1+ k)) #\%)) line)
+   ((> (|#| line) k) (substring line 0 k))
+   (t line))))
+
+\end{chunk}
+
+\defun{newString2Words}{newString2Words}
+\calls{newString2Words}{newWordFrom}
+\calls{newString2Words}{nreverse0}
+\begin{chunk}{defun newString2Words}
+(defun |newString2Words| (z)
+ (let (m tmp1 w i result)
+  (cond
+   ((null (stringp z)) (list z))
+   (t
+    (setq m (maxindex z))
+    (cond
+     ((eql m -1) nil)
+     (t
+      (setq i 0)
+      (do () ; [w while newWordFrom(l,i,m) is [w,i]]
+          ((null (progn
+                  (setq tmp1 (|newWordFrom| z i m))
+                  (and (consp tmp1)
+                       (progn
+                        (setq w (qcar tmp1))
+                        (and (consp (qcdr tmp1))
+                             (eq (qcddr tmp1) nil)
+                             (progn
+                              (setq i (qcadr tmp1))
+                              t))))))
+             (nreverse0 result))
+          (setq result (cons (qcar tmp1) result)))))))))
+
+\end{chunk}
+
+\section{Comment Checking Layer 9}
+
+\defun{checkAddBackSlashes}{checkAddBackSlashes}
+\calls{checkAddBackSlashes}{strconc}
+\calls{checkAddBackSlashes}{maxindex}
+\calls{checkAddBackSlashes}{checkAddBackSlashes}
+\refsdollar{checkAddBackSlashes}{charBack}
+\refsdollar{checkAddBackSlashes}{charEscapeList}
+\begin{chunk}{defun checkAddBackSlashes}
+(defun |checkAddBackSlashes| (s)
+ (let (c m char insertIndex k)
+ (declare (special |$charBack| |$charEscapeList|))
+  (cond
+   ((or (and (charp s) (setq c s))
+        (and (eql (|#| s) 1) (setq c (elt s 0))))
+     (if (member s |$charEscapeList|)
+      (strconc |$charBack| c)
+      s))
+    (t
+     (setq k 0)
+     (setq m (maxindex s))
+     (setq insertIndex nil)
+     (loop while (< k m)
+      do
+       (setq char (elt s k))
+       (cond
+        ((char= char |$charBack|) (setq k (+ k 2)))
+        ((member char |$charEscapeList|) (return (setq insertIndex k))))
+        (setq k (1+ k)))
+     (cond
+      (insertIndex
+       (|checkAddBackSlashes|
+        (strconc (substring s 0 insertIndex) |$charBack| (elt s k)
+                 (substring s (1+ insertIndex) nil))))
+      (T s))))))
+
+\end{chunk}
+
+\defun{checkAddMacros}{checkAddMacros}
+\calls{checkAddMacros}{lassoc}
+\calls{checkAddMacros}{nreverse}
+\refsdollar{checkAddMacros}{HTmacs}
+\begin{chunk}{defun checkAddMacros}
+(defun |checkAddMacros| (u)
+ (let (x verbatim y acc)
+ (declare (special |$HTmacs|))
+  (loop while u
+   do
+   (setq x (car u))
+   (setq acc
+    (cond
+     ((string= x "\\end{verbatim}")
+       (setq verbatim nil)
+       (cons x acc))
+     (verbatim 
+       (cons x acc))
+     ((string= x "\\begin{verbatim}")
+       (setq verbatim t)
+       (cons x acc))
+     ((setq y (lassoc x |$HTmacs|))
+       (append y acc))
+     (t (cons x acc))))
+   (pop u))
+  (nreverse acc)))
+
+\end{chunk}
+
+\defun{checkAddPeriod}{checkAddPeriod}
+\calls{checkAddPeriod}{setelt}
+\calls{checkAddPeriod}{maxindex}
+\begin{chunk}{defun checkAddPeriod}
+(defun |checkAddPeriod| (s)
+ (let (m lastChar)
+  (setq m (maxindex s))
+  (setq lastChar (elt s m))
+  (cond
+   ((or (char= lastChar #\!) (char= lastChar #\?) (char= lastChar #\.)) s)
+   ((or (char= lastChar #\,) (char= lastChar #\;))
+     (setelt s m #\.) 
+     s)
+   (t s))))
+
+\end{chunk}
+
+\defun{checkAddSpaceSegments}{checkAddSpaceSegments}
+\calls{checkAddSpaceSegments}{checkAddSpaceSegments}
+\calls{checkAddSpaceSegments}{maxindex}
+\calls{checkAddSpaceSegments}{charPosition}
+\calls{checkAddSpaceSegments}{strconc}
+\refsdollar{checkAddSpaceSegments}{charBlank}
+\begin{chunk}{defun checkAddSpaceSegments}
+(defun |checkAddSpaceSegments| (u k)
+ (let (m i j n)
+ (declare (special |$charBlank|))
+  (setq m (maxindex u))
+  (setq i (|charPosition| |$charBlank| u k))
+  (cond
+   ((> i m) u)
+   (t
+    (setq j i)
+    (loop while (and (incf j) (char= (elt u j) #\space)))
+    (setq n (- j i)) ; number of blanks
+    (if (> n 1)
+     (strconc (substring u 0 i) "\\space{" (stringimage n) "}"
+               (|checkAddSpaceSegments| (substring u (+ i n) nil) 0))
+     (|checkAddSpaceSegments| u j))))))
+
+\end{chunk}
+
+\defun{checkAddSpaces}{checkAddSpaces}
+\refsdollar{checkAddSpaces}{charBlank}
+\refsdollar{checkAddSpaces}{charFauxNewline}
+\begin{chunk}{defun checkAddSpaces}
+(defun |checkAddSpaces| (u)
+ (let (u2 space i)
+ (declare (special |$charBlank| |$charFauxNewline|))
+  (cond
+   ((null u) nil)
+   ((null (cdr u)) u)
+   (t
+    (setq space |$charBlank|) 
+    (setq i 0)
+    (loop for f in u 
+     do
+      (incf i)
+      (when (string= f "\\begin{verbatim}")
+        (setq space |$charFauxNewline|)
+        (unless u2 (setq u2 (list space))))
+      (if (> i 1) 
+        (setq u2 (append u2 (list space f)))
+        (setq u2 (append u2 (list f))))
+      (when (string= f "\\end{verbatim}")
+        (setq u2 (append u2 (list space)))
+        (setq space |$charBlank|)))
+    u2))))
+
+\end{chunk}
+
+\defun{checkAlphabetic}{checkAlphabetic}
+\refsdollar{checkAlphabetic}{charIdentifierEndings}
+\begin{chunk}{defun checkAlphabetic}
+(defun |checkAlphabetic| (c)
+ (declare (special |$charIdentifierEndings|))
+ (or (alpha-char-p c) (digitp c) (member c |$charIdentifierEndings|)))
+
+\end{chunk}
+
 \defun{checkIeEgfun}{checkIeEgfun}
 \calls{checkIeEgfun}{maxindex}
 \calls{checkIeEgfun}{checkIeEgFun}
@@ -20560,35 +21282,116 @@ This returns a line beginning with right brace
 
 \end{chunk}
 
-\defun{checkSplitBrace}{checkSplitBrace}
-\calls{checkSplitBrace}{charp}
-\calls{checkSplitBrace}{length}
-\calls{checkSplitBrace}{checkSplitBackslash}
-\calls{checkSplitBrace}{checkSplitBrace}
-\calls{checkSplitBrace}{checkSplitOn}
-\calls{checkSplitBrace}{checkSplitPunctuation}
-\begin{chunk}{defun checkSplitBrace}
-(defun |checkSplitBrace| (x)
- (let (m u)
+\defun{checkIsValidType}{checkIsValidType}
+This function returns ok if correct, 
+form is wrong number of arguments, nil if unknown
+\calls{checkIsValidType}{nequal}
+\calls{checkIsValidType}{length}
+\calls{checkIsValidType}{checkIsValidType}
+\calls{checkIsValidType}{constructor?}
+\calls{checkIsValidType}{abbreviation?}
+\calls{checkIsValidType}{getdatabase}
+\begin{chunk}{defun checkIsValidType}
+(defun |checkIsValidType| (form)
+ (labels (
+  (fn (form coSig)
+   (cond
+    ((nequal (|#| form) (|#| coSig)) form)
+    ((let (result)
+      (loop for x in (rest form)
+            for flag in (rest coSig)
+       do (when flag (setq result (or result (null (|checkIsValidType| x))))))
+      result)
+     nil)
+    (t '|ok|))))
+ (let (op args conname)
   (cond
-   ((charp x) (list x))
-   ((eql (|#| x) 1) (list (elt x 0)))
-   ((and (setq u (|checkSplitBackslash| x)) (cdr u))
-     (let (result)
-      (loop for y in u do (append result (|checkSplitBrace| y)))
-      result))
-    (t
-      (setq m (maxindex x))
-      (cond
-        ((and (setq u (|checkSplitOn| x)) (cdr u))
-         (let (result)
-          (loop for y in u do (append result (|checkSplitBrace| y)))
-          result))
-        ((and (setq u (|checkSplitPunctuation| x)) (cdr u))
-         (let (result)
-          (loop for y in u do (append result (|checkSplitBrace| y)))
-          result))
-        (t (list x)))))))
+   ((atom form) '|ok|)
+   (t
+    (setq op (car form))
+    (setq args (cdr form))
+    (setq conname
+     (if (|constructor?| op) 
+      op
+      (|abbreviation?| op)))
+    (when conname (fn form (getdatabase conname 'cosig))))))))
+
+\end{chunk}
+
+\defun{checkLookForLeftBrace}{checkLookForLeftBrace}
+\calls{checkLookForLeftBrace}{nequal}
+\refsdollar{checkLookForLeftBrace}{charBlank}
+\refsdollar{checkLookForLeftBrace}{charLbrace}
+\begin{chunk}{defun checkLookForLeftBrace}
+(defun |checkLookForLeftBrace| (u)
+ (declare (special |$charBlank| |$charLbrace|))
+  (loop while u
+   do
+    (cond
+     ((equal (car u) |$charLbrace|) (return (car u)))
+     ((nequal (car u) |$charBlank|) (return nil))
+     (t (pop u))))
+  u)
+
+\end{chunk}
+
+\defun{checkLookForRightBrace}{checkLookForRightBrace}
+This returns a line beginning with right brace
+\refsdollar{checkLookForRightBrace}{charLbrace}
+\refsdollar{checkLookForRightBrace}{charRbrace}
+\begin{chunk}{defun checkLookForRightBrace}
+(defun |checkLookForRightBrace| (u)
+ (let (found count)
+ (declare (special |$charLbrace| |$charRbrace|))
+  (setq count 0)
+  (loop while u 
+   do
+   (cond
+    ((equal (car u) |$charRbrace|)
+     (if (eql count 0) 
+      (return (setq found u))
+      (setq count (1- count))))
+    ((equal (car u) |$charLbrace|)
+      (setq count (1+ count))))
+    (pop u))
+  found))
+
+\end{chunk}
+
+\defun{checkNumOfArgs}{checkNumOfArgs}
+A nil return implies that the argument list length does not match
+\calls{checkNumOfArgs}{opOf}
+\calls{checkNumOfArgs}{constructor?}
+\calls{checkNumOfArgs}{abbreviation?}
+\calls{checkNumOfArgs}{getdatabase}
+\begin{chunk}{defun checkNumOfArgs}
+(defun |checkNumOfArgs| (conform)
+ (let (conname)
+  (setq conname (|opOf| conform))
+  (when (or (|constructor?| conname) (setq conname (|abbreviation?| conname)))
+     (|#| (getdatabase conname 'constructorargs)))))
+
+\end{chunk}
+
+\defun{checkSayBracket}{checkSayBracket}
+\begin{chunk}{defun checkSayBracket}
+(defun |checkSayBracket| (x)
+ (cond
+  ((or (char= x #\() (char= x #\))) "pren")
+  ((or (char= x #\{) (char= x #\})) "brace")
+  (t "bracket")))
+
+\end{chunk}
+
+\defun{checkSkipBlanks}{checkSkipBlanks}
+\refsdollar{checkSkipBlanks}{charBlank}
+\begin{chunk}{defun checkSkipBlanks}
+(defun |checkSkipBlanks| (u i m)
+ (declare (special |$charBlank|))
+  (do ()
+      ((null (and (> m i) (equal (elt u i) |$charBlank|))) nil)
+   (setq i (1+ i)))
+  (unless (= i m) i))
 
 \end{chunk}
 
@@ -20631,6 +21434,45 @@ This returns a line beginning with right brace
 
 \end{chunk}
 
+\defun{checkSplitOn}{checkSplitOn}
+\calls{checkSplitOn}{checkSplitOn}
+\calls{checkSplitOn}{charp}
+\calls{checkSplitOn}{maxindex}
+\calls{checkSplitOn}{charPosition}
+\refsdollar{checkSplitOn}{charBack}
+\refsdollar{checkSplitOn}{charSplitList}
+\begin{chunk}{defun checkSplitOn}
+(defun |checkSplitOn| (x)
+ (let (m char k z)
+ (declare (special |$charBack| |$charSplitList|))
+  (cond
+   ((charp x) (list x))
+   (t
+    (setq z |$charSplitList|)
+    (setq m (maxindex x))
+    (loop while z
+     do
+      (setq char (car z))
+      (cond
+       ((and (eql m 0) (equal (elt x 0) char))
+         (return (setq k -1)))
+       (t
+         (setq k (|charPosition| char x 0))
+         (cond
+          ((and (> k 0) (equal (elt x (1- k)) |$charBack|)) (list x))
+          ((<= k m) (return k)))))
+      (pop z))
+    (cond
+     ((null z) (list x))
+     ((eql k -1) (list char))
+     ((eql k 0) (list char (substring x 1 nil)))
+     ((eql k (maxindex x)) (list (substring x 0 k) char))
+     (t
+       (cons (substring x 0 k)
+             (cons char (|checkSplitOn| (substring x (1+ k) nil))))))))))
+
+\end{chunk}
+
 \defun{checkSplitPunctuation}{checkSplitPunctuation}
 \calls{checkSplitPunctuation}{charp}
 \calls{checkSplitPunctuation}{maxindex}
@@ -20697,88 +21539,59 @@ This returns a line beginning with right brace
 
 \end{chunk}
 
-\defun{checkSplitOn}{checkSplitOn}
-\calls{checkSplitOn}{checkSplitOn}
-\calls{checkSplitOn}{charp}
-\calls{checkSplitOn}{maxindex}
-\calls{checkSplitOn}{charPosition}
-\refsdollar{checkSplitOn}{charBack}
-\refsdollar{checkSplitOn}{charSplitList}
-\begin{chunk}{defun checkSplitOn}
-(defun |checkSplitOn| (x)
- (let (m char k z)
- (declare (special |$charBack| |$charSplitList|))
-  (cond
-   ((charp x) (list x))
-   (t
-    (setq z |$charSplitList|)
-    (setq m (maxindex x))
-    (loop while z
-     do
-      (setq char (car z))
-      (cond
-       ((and (eql m 0) (equal (elt x 0) char))
-         (return (setq k -1)))
-       (t
-         (setq k (|charPosition| char x 0))
-         (cond
-          ((and (> k 0) (equal (elt x (1- k)) |$charBack|)) (list x))
-          ((<= k m) (return k)))))
-      (pop z))
-    (cond
-     ((null z) (list x))
-     ((eql k -1) (list char))
-     ((eql k 0) (list char (substring x 1 nil)))
-     ((eql k (maxindex x)) (list (substring x 0 k) char))
-     (t
-       (cons (substring x 0 k)
-             (cons char (|checkSplitOn| (substring x (1+ k) nil))))))))))
-
-\end{chunk}
-
-\defun{checkNumOfArgs}{checkNumOfArgs}
-A nil return implies that the argument list length does not match
-\calls{checkNumOfArgs}{opOf}
-\calls{checkNumOfArgs}{constructor?}
-\calls{checkNumOfArgs}{abbreviation?}
-\calls{checkNumOfArgs}{getdatabase}
-\begin{chunk}{defun checkNumOfArgs}
-(defun |checkNumOfArgs| (conform)
- (let (conname)
-  (setq conname (|opOf| conform))
-  (when (or (|constructor?| conname) (setq conname (|abbreviation?| conname)))
-     (|#| (getdatabase conname 'constructorargs)))))
+\defun{firstNonBlankPosition}{firstNonBlankPosition}
+\calls{firstNonBlankPosition}{nequal}
+\calls{firstNonBlankPosition}{maxindex}
+\begin{chunk}{defun firstNonBlankPosition}
+(defun |firstNonBlankPosition| (&rest therest)
+ (let ((x (car therest)) (options (cdr therest)) start k)
+ (declare (special |$charBlank|))
+  (setq start (or (ifcar options) 0))
+  (setq k -1)
+  (loop for i from start to (maxindex x)
+   do (when (nequal (elt x i) |$charBlank|) (return (setq k i))))
+  k))
 
 \end{chunk}
 
-\defun{checkRemoveComments}{checkRemoveComments}
-\calls{checkRemoveComments}{checkTrimCommented}
-\begin{chunk}{defun checkRemoveComments}
-(defun |checkRemoveComments| (lines)
- (let (line acc)
-  (loop while lines
+\defun{getMatchingRightPren}{getMatchingRightPren}
+\calls{getMatchingRightPren}{maxindex}
+\begin{chunk}{defun getMatchingRightPren}
+(defun |getMatchingRightPren| (u j open close)
+ (let (m c found count)
+  (setq count 0)
+  (setq m (maxindex u))
+  (loop for i from j to m
    do
-   (setq line (|checkTrimCommented| (car lines)))
-   (when (>= (|firstNonBlankPosition| line) 0) (push line acc))
-   (pop lines))
-  (nreverse acc)))
+    (setq c (elt u i))
+    (cond
+     ((equal c close)
+      (if (eql count 0) 
+       (return (setq found i))
+       (setq count (1- count))))
+     ((equal c open)
+       (setq count (1+ count)))))
+  found))
 
 \end{chunk}
 
-\defun{checkTrimCommented}{checkTrimCommented}
-\calls{checkTrimCommented}{length}
-\calls{checkTrimCommented}{htcharPosition}
-\calls{checkTrimCommented}{nequal}
-\begin{chunk}{defun checkTrimCommented}
-(defun |checkTrimCommented| (line)
- (let (n k)
-  (setq n (|#| line))
-  (setq k (|htcharPosition| (|char| '%) line 0))
+\defun{hasNoVowels}{hasNoVowels}
+\calls{hasNoVowels}{maxindex}
+\begin{chunk}{defun hasNoVowels}
+(defun |hasNoVowels| (x)
+ (labels (
+  (isVowel (c)
+   (or (eq c #\a) (eq c #\e) (eq c #\i) (eq c #\o) (eq c #\u)
+       (eq c #\A) (eq c #\E) (eq c #\I) (eq c #\O) (eq c #\U))))
+ (let (max)
+  (setq max (maxindex x))
   (cond
-   ((eql k 0) "")
-   ((or (>= k (1- n)) (nequal (elt line (1+ k)) #\%)) line)
-   ((> (|#| line) k) (substring line 0 k))
-   (t line))))
+   ((char= (elt x max) #\y) nil)
+   (t
+    (let ((result t))
+     (loop for i from 0 to max
+      do (setq result (and result (null (isVowel (elt x i))))))
+     result))))))
 
 \end{chunk}
 
@@ -20804,104 +21617,6 @@ A nil return implies that the argument list length does not match
 
 \end{chunk}
 
-\defun{checkAddMacros}{checkAddMacros}
-\calls{checkAddMacros}{lassoc}
-\calls{checkAddMacros}{nreverse}
-\refsdollar{checkAddMacros}{HTmacs}
-\begin{chunk}{defun checkAddMacros}
-(defun |checkAddMacros| (u)
- (let (x verbatim y acc)
- (declare (special |$HTmacs|))
-  (loop while u
-   do
-   (setq x (car u))
-   (setq acc
-    (cond
-     ((string= x "\\end{verbatim}")
-       (setq verbatim nil)
-       (cons x acc))
-     (verbatim 
-       (cons x acc))
-     ((string= x "\\begin{verbatim}")
-       (setq verbatim t)
-       (cons x acc))
-     ((setq y (lassoc x |$HTmacs|))
-       (append y acc))
-     (t (cons x acc))))
-   (pop u))
-  (nreverse acc)))
-
-\end{chunk}
-
-\defun{checkIndentedLines}{checkIndentedLines}
-\calls{checkIndentedLines}{firstNonBlankPosition}
-\calls{checkIndentedLines}{strconc}
-\calls{checkIndentedLines}{checkAddSpaceSegments}
-\refsdollar{checkIndentedLines}{charFauxNewline}
-\begin{chunk}{defun checkIndentedLines}
-(defun |checkIndentedLines| (u margin)
- (let (k s verbatim u2)
- (declare (special |$charFauxNewline|))
-  (loop for x in u
-   do
-    (setq k (|firstNonBlankPosition| x))
-    (cond
-     ((eql k -1)
-      (if verbatim 
-       (setq u2 (append u2 (list |$charFauxNewline|)))
-       (setq u2 (append u2 (list "\\blankline ")))))
-     (t 
-      (setq s (substring x k nil))
-      (cond
-       ((string= s "\\begin{verbatim}")
-         (setq verbatim t)
-         (setq u2 (append u2 (list s))))
-       ((string= s "\\end{verbatim}")
-         (setq verbatim nil)
-         (setq u2 (append u2 (list s))))
-       (verbatim
-         (setq u2 (append u2 (list (substring x margin nil)))))
-       ((eql margin k)
-         (setq u2 (append u2 (list s))))
-       (t
-         (setq u2 
-          (append u2 
-           (list (strconc "\\indented{" (stringimage (- k margin))
-                          "}{" (|checkAddSpaceSegments| s 0) "}")))))))))
-  u2))
-
-\end{chunk}
-
-\defun{newString2Words}{newString2Words}
-\calls{newString2Words}{newWordFrom}
-\calls{newString2Words}{nreverse0}
-\begin{chunk}{defun newString2Words}
-(defun |newString2Words| (z)
- (let (m tmp1 w i result)
-  (cond
-   ((null (stringp z)) (list z))
-   (t
-    (setq m (maxindex z))
-    (cond
-     ((eql m -1) nil)
-     (t
-      (setq i 0)
-      (do () ; [w while newWordFrom(l,i,m) is [w,i]]
-          ((null (progn
-                  (setq tmp1 (|newWordFrom| z i m))
-                  (and (consp tmp1)
-                       (progn
-                        (setq w (qcar tmp1))
-                        (and (consp (qcdr tmp1))
-                             (eq (qcddr tmp1) nil)
-                             (progn
-                              (setq i (qcadr tmp1))
-                              t))))))
-             (nreverse0 result))
-          (setq result (cons (qcar tmp1) result)))))))))
-
-\end{chunk}
-
 \defun{newWordFrom}{newWordFrom}
 \refsdollar{newWordFrom}{stringFauxNewline}
 \refsdollar{newWordFrom}{charBlank}
@@ -20934,382 +21649,52 @@ A nil return implies that the argument list length does not match
 
 \end{chunk}
 
-\defun{checkGetArgs}{checkGetArgs}
-\calls{checkGetArgs}{maxindex}
-\calls{checkGetArgs}{firstNonBlankPosition}
-\calls{checkGetArgs}{checkGetArgs}
-\calls{checkGetArgs}{stringPrefix?}
-\calls{checkGetArgs}{getMatchingRightPren}
-\calls{checkGetArgs}{charPosition}
-\calls{checkGetArgs}{nequal}
-\calls{checkGetArgs}{trimString}
-\refsdollar{checkGetArgs}{charComma}
-\begin{chunk}{defun checkGetArgs}
-(defun |checkGetArgs| (u)
- (let (m k acc i)
- (declare (special |$charComma|))
-  (cond
-   ((null (stringp u)) nil)
-   (t
-    (setq m (maxindex u))
-    (setq k (|firstNonBlankPosition| u))
-    (cond
-     ((> k 0)
-      (|checkGetArgs| (substring u k nil)))
-     ((|stringPrefix?| "\\spad{" u)
-      (setq k (or (|getMatchingRightPren| u 6 #\{ #\}) m))
-      (|checkGetArgs| (substring u 6 (- k 6))))
-     ((> (setq i (|charPosition| #\( u 0)) m)
-      nil)
-     ((nequal (elt u m) #\))
-      nil)
-     (t
-      (do ()
-          ((null (> m (setq k (|charPosition| |$charComma| u (1+ i))))) nil)
-        (setq acc 
-         (cons (|trimString| (substring u (1+ i) (1- (- k i)))) acc))
-        (setq i k))
-      (nreverse (cons (substring u (1+ i) (1- (- m i))) acc))))))))
-
-\end{chunk}
-
-\defun{checkAddSpaceSegments}{checkAddSpaceSegments}
-\calls{checkAddSpaceSegments}{checkAddSpaceSegments}
-\calls{checkAddSpaceSegments}{maxindex}
-\calls{checkAddSpaceSegments}{charPosition}
-\calls{checkAddSpaceSegments}{strconc}
-\refsdollar{checkAddSpaceSegments}{charBlank}
-\begin{chunk}{defun checkAddSpaceSegments}
-(defun |checkAddSpaceSegments| (u k)
- (let (m i j n)
- (declare (special |$charBlank|))
-  (setq m (maxindex u))
-  (setq i (|charPosition| |$charBlank| u k))
-  (cond
-   ((> i m) u)
-   (t
-    (setq j i)
-    (loop while (and (incf j) (char= (elt u j) #\space)))
-    (setq n (- j i)) ; number of blanks
-    (if (> n 1)
-     (strconc (substring u 0 i) "\\space{" (stringimage n) "}"
-               (|checkAddSpaceSegments| (substring u (+ i n) nil) 0))
-     (|checkAddSpaceSegments| u j))))))
-
-\end{chunk}
-
-\defun{checkTrim}{checkTrim}
-\calls{checkTrim}{charPosition}
-\calls{checkTrim}{nequal}
-\calls{checkTrim}{systemError}
-\calls{checkTrim}{checkDocError}
-\refsdollar{checkTrim}{charBlank}
-\refsdollar{checkTrim}{x}
-\refsdollar{checkTrim}{charPlus}
-\begin{chunk}{defun checkTrim}
-(defun |checkTrim| (|$x| lines)
- (declare (special |$x|))
- (labels (
-  (trim (s)
-   (let (k)
-   (declare (special |$charBlank|))
-    (setq k (wherePP s))
-    (substring s (+ k 2) nil)))
-  (wherePP (u)
-   (let (k)
-   (declare (special |$charPlus|))
-    (setq k (|charPosition| |$charPlus| u 0))
-    (if (or (eql k (|#| u))
-            (nequal (|charPosition| |$charPlus| u (1+ k)) (1+ k)))
-      (|systemError| " Improper comment found")
-      k))))
- (let (j s)
-  (setq s  (list (wherePP (car lines))))
-  (loop for x in (rest lines)
-   do
-    (setq j (wherePP x))
-    (unless (member j s)
-      (|checkDocError| (list |$x| " has varying indentation levels"))
-      (setq s (cons j s))))
-  (loop for y in lines
-   collect (trim y)))))
-
-\end{chunk}
-
-\defun{checkExtract}{checkExtract}
-\calls{checkExtract}{firstNonBlankPosition}
-\calls{checkExtract}{substring?}
-\calls{checkExtract}{charPosition}
-\calls{checkExtract}{length}
-\begin{chunk}{defun checkExtract}
-(defun |checkExtract| (header lines)
- (let (line u margin firstLines m k j i acc)
-  (loop while lines
-   do
-    (setq line (car lines))
-    (setq k (|firstNonBlankPosition| line)) ; gives margin of description
-    (if (|substring?| header line k) 
-      (return nil)
-      (setq lines (cdr lines))))
-  (cond
-   ((null lines) nil)
-   (t
-    (setq u (car lines))
-    (setq j (|charPosition| #\: u k))
-    (setq margin k)
-    (setq firstLines
-     (if (nequal (setq k (|firstNonBlankPosition| u (1+ j))) -1)
-       (cons (substring u (1+ j) nil) (cdr lines))
-       (cdr lines)))
-    ; now look for another header; if found skip all rest of these lines
-    (setq acc nil)
-    (loop for line in firstLines
-     do
-      (setq m (|#| line))
-      (cond
-       ((eql (setq k (|firstNonBlankPosition| line)) -1) '|skip|)
-       ((> k margin) '|skip|)
-       ((null (upper-case-p (elt line k))) '|skip|)
-       ((equal (setq j (|charPosition| #\: line k)) m) '|skip|)
-       ((> j (setq i (|charPosition| #\space line (1+ k)))) '|skip|)
-       (t (return nil)))
-      (setq acc (cons line acc)))
-    (nreverse acc)))))
-
-\end{chunk}
-
-\defun{checkFixCommonProblem}{checkFixCommonProblem}
-\calls{checkFixCommonProblem}{member}
-\calls{checkFixCommonProblem}{ifcar}
-\calls{checkFixCommonProblem}{ifcdr}
-\calls{checkFixCommonProblem}{nequal}
-\calls{checkFixCommonProblem}{checkDocError}
-\refsdollar{checkFixCommonProblem}{charLbrace}
-\refsdollar{checkFixCommonProblem}{HTspadmacros}
-\begin{chunk}{defun checkFixCommonProblem}
-(defun |checkFixCommonProblem| (u)
- (let (x next acc)
- (declare (special |$charLbrace| |$HTspadmacros|))
-  (loop while u
-   do
-    (setq x (car u))
-    (cond
-     ((and (equal x |$charLbrace|)
-           (|member| (setq next (ifcar (cdr u))) |$HTspadmacros|)
-           (nequal (ifcar (ifcdr (cdr u))) |$charLbrace|))
-       (|checkDocError| (list "Reversing " next " and left brace"))
-       (setq acc (cons |$charLbrace| (cons next acc)))
-       (setq u (cddr u)))
-     (t
-      (setq acc (cons x acc))
-      (setq u (cdr u)))))
-  (nreverse acc)))
-
-\end{chunk}
-
-\defun{checkDecorate}{checkDecorate}
-\calls{checkDecorate}{checkDocError}
-\calls{checkDecorate}{member}
-\calls{checkDecorate}{checkAddBackSlashes}
-\calls{checkDecorate}{hasNoVowels}
-\refsdollar{checkDecorate}{checkingXmptex?}
-\refsdollar{checkDecorate}{charExclusions}
-\refsdollar{checkDecorate}{argl}
-\refsdollar{checkDecorate}{charBack}
-\refsdollar{checkDecorate}{charRbrace}
-\refsdollar{checkDecorate}{charLbrace}
-\begin{chunk}{defun checkDecorate}
-(defun |checkDecorate| (u)
- (let (x count mathSymbolsOk spadflag verbatim v xcount acc)
- (declare (special |$charLbrace| |$charRbrace| |$charBack| |$argl|
-                   |$charExclusions| |$checkingXmptex?|))
-  (setq count 0)
-  (loop while u 
-   do
-    (setq x (car u))
-    (cond
-     ((null verbatim)
-      (cond
-       ((string= x "\\em")
-        (cond
-         ((> count 0)
-           (setq mathSymbolsOk (1- count))
-           (setq spadflag (1- count)))
-         (t
-          (|checkDocError| (list "\\em must be enclosed in braces"))))))
-      (when (|member| x '("\\spadpaste" "\\spad" "\\spadop"))
-        (setq mathSymbolsOk count))
-      (cond
-       ((|member| x '("\\s" "\\spadtype" "\\spadsys" "\\example" "\\andexample"
-                      "\\spadop" "\\spad" "\\spadignore" "\\spadpaste"
-                      "\\spadcommand" "\\footnote"))
-         (setq spadflag count))
-       ((equal x |$charLbrace|)
-         (setq count (1+ count)))
-       ((equal x |$charRbrace|)
-         (setq count (1- count))
-         (when (eql mathSymbolsOk count) (setq mathSymbolsOk nil))
-         (when (eql spadflag count) (setq spadflag nil)))
-       ((and (null mathSymbolsOk)
-             (|member| x '("+" "*" "=" "==" "->")))
-        (when |$checkingXmptex?|
-          (|checkDocError| 
-           (list '|Symbol | x " appearing outside \\spad{}")))))))
-    (setq acc
-     (cond
-      ((string= x "\\end{verbatim}")
-        (setq verbatim nil)
-        (cons x acc))
-      (verbatim (cons x acc))
-      ((string= x "\\begin{verbatim}")
-       (setq verbatim t)
-       (cons x acc))
-      ((and (string= x "\\begin")
-            (equal (car (setq v (ifcdr u))) |$charLbrace|)
-            (string= (car (setq v (ifcdr v))) "detail")
-            (equal (car (setq v (ifcdr v))) |$charRbrace|))
-        (setq u v)
-        (cons "\\blankline " acc))
-      ((and (string= x "\\end")
-            (equal (car (setq v (ifcdr u))) |$charLbrace|)
-            (string= (car (setq v (ifcdr v))) "detail")
-            (equal (car (setq v (ifcdr v))) |$charRbrace|))
-        (setq u v) 
-        acc)
-      ((or (char= x #\$) (string= x "$"))
-        (cons "\\$" acc))
-      ((or (char= x #\%) (string= x "%"))
-        (cons "\\%" acc))
-      ((or (char= x #\,) (string= x ","))
-        (cons ",{}" acc))
-      ((string= x "\\spad")
-        (cons "\\spad" acc))
-      ((and (stringp x) (digitp (elt x 0)))
-        (cons x acc))
-      ((and (null spadflag)
-            (or (and (charp x) 
-                     (alpha-char-p x) 
-                     (null (member x |$charExclusions|)))
-                (|member| x |$argl|)))
-        (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
-      ((and (null spadflag)
-            (or (and (stringp x)
-                     (null (equal (elt x 0) |$charBack|))
-                     (digitp (elt x (maxindex x))))
-                (|member| x '("true" "false"))))
-        (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
-      (t
-       (setq xcount (|#| x))
-       (cond
-        ((and (eql xcount 3)
-              (char= (elt x 1) #\t)
-              (char= (elt x 2) #\h))
-          (cons "th" (cons |$charRbrace|
-            (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
-        ((and (eql xcount 4)
-              (char= (elt x 1) #\-)
-              (char= (elt x 2) #\t)
-              (char= (elt x 3) #\h))
-         (cons "-th" (cons |$charRbrace|
-           (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
-        ((or (and (eql xcount 2)
-                  (char= (elt x 1) #\i))
-             (and (null spadflag)
-                  (> xcount 0)
-                  (> 4 xcount)
-                  (null (|member| x '("th" "rd" "st")))
-                  (|hasNoVowels| x)))
-         (cons |$charRbrace|
-           (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
-        (t
-         (cons (|checkAddBackSlashes| x) acc))))))
-    (setq u (cdr u)))
-  (nreverse acc)))
-
-\end{chunk}
-
-\defun{hasNoVowels}{hasNoVowels}
-\calls{hasNoVowels}{maxindex}
-\begin{chunk}{defun hasNoVowels}
-(defun |hasNoVowels| (x)
- (labels (
-  (isVowel (c)
-   (or (eq c #\a) (eq c #\e) (eq c #\i) (eq c #\o) (eq c #\u)
-       (eq c #\A) (eq c #\E) (eq c #\I) (eq c #\O) (eq c #\U))))
- (let (max)
-  (setq max (maxindex x))
-  (cond
-   ((char= (elt x max) #\y) nil)
-   (t
-    (let ((result t))
-     (loop for i from 0 to max
-      do (setq result (and result (null (isVowel (elt x i))))))
-     result))))))
-
-\end{chunk}
-
-\defun{checkAddBackSlashes}{checkAddBackSlashes}
-\calls{checkAddBackSlashes}{strconc}
-\calls{checkAddBackSlashes}{maxindex}
-\calls{checkAddBackSlashes}{checkAddBackSlashes}
-\refsdollar{checkAddBackSlashes}{charBack}
-\refsdollar{checkAddBackSlashes}{charEscapeList}
-\begin{chunk}{defun checkAddBackSlashes}
-(defun |checkAddBackSlashes| (s)
- (let (c m char insertIndex k)
- (declare (special |$charBack| |$charEscapeList|))
+\defun{removeBackslashes}{removeBackslashes}
+\calls{removeBackslashes}{charPosition}
+\calls{removeBackslashes}{removeBackslashes}
+\calls{removeBackslashes}{strconc}
+\calls{removeBackslashes}{length}
+\refsdollar{removeBackslashes}{charBack}
+\begin{chunk}{defun removeBackslashes}
+(defun |removeBackslashes| (s)
+ (let (k)
+ (declare (special |$charBack|))
   (cond
-   ((or (and (charp s) (setq c s))
-        (and (eql (|#| s) 1) (setq c (elt s 0))))
-     (if (member s |$charEscapeList|)
-      (strconc |$charBack| c)
-      s))
-    (t
-     (setq k 0)
-     (setq m (maxindex s))
-     (setq insertIndex nil)
-     (loop while (< k m)
-      do
-       (setq char (elt s k))
-       (cond
-        ((char= char |$charBack|) (setq k (+ k 2)))
-        ((member char |$charEscapeList|) (return (setq insertIndex k))))
-        (setq k (1+ k)))
-     (cond
-      (insertIndex
-       (|checkAddBackSlashes|
-        (strconc (substring s 0 insertIndex) |$charBack| (elt s k)
-                 (substring s (1+ insertIndex) nil))))
-      (T s))))))
+   ((string= s "") "")
+   ((> (|#| s) (setq k (|charPosition| |$charBack| s 0)))
+    (if (eql k 0) 
+     (|removeBackslashes| (substring s 1 nil))
+     (strconc (substring s 0 k)
+              (|removeBackslashes| (substring s (1+ k) nil)))))
+   (t s))))
 
 \end{chunk}
 
-\defun{checkAddSpaces}{checkAddSpaces}
-\refsdollar{checkAddSpaces}{charBlank}
-\refsdollar{checkAddSpaces}{charFauxNewline}
-\begin{chunk}{defun checkAddSpaces}
-(defun |checkAddSpaces| (u)
- (let (u2 space i)
- (declare (special |$charBlank| |$charFauxNewline|))
-  (cond
-   ((null u) nil)
-   ((null (cdr u)) u)
-   (t
-    (setq space |$charBlank|) 
-    (setq i 0)
-    (loop for f in u 
-     do
-      (incf i)
-      (when (string= f "\\begin{verbatim}")
-        (setq space |$charFauxNewline|)
-        (unless u2 (setq u2 (list space))))
-      (if (> i 1) 
-        (setq u2 (append u2 (list space f)))
-        (setq u2 (append u2 (list f))))
-      (when (string= f "\\end{verbatim}")
-        (setq u2 (append u2 (list space)))
-        (setq space |$charBlank|)))
-    u2))))
+\defun{whoOwns}{whoOwns}
+This function always returns nil in the current system.
+Since it has no side effects we define it to return nil.
+\calls{whoOwns}{getdatabase}
+\calls{whoOwns}{strconc}
+\calls{whoOwns}{awk}
+\calls{whoOwns}{shut}
+\refsdollar{whoOwns}{exposeFlag}
+\begin{chunk}{defun whoOwns}
+(defun |whoOwns| (con)
+ (declare (ignore con))
+ nil)
+; (let (filename quoteChar instream value)
+; (declare (special |$exposeFlag|))
+;  (cond
+;   ((null |$exposeFlag|) nil)
+;   (t
+;    (setq filename (getdatabase con 'sourcefile))
+;    (setq quoteChar #\")
+;    (obey (strconc "awk '$2 == " quoteChar filename quoteChar
+;                    " {print $1}' whofiles > /tmp/temp"))
+;    (setq instream (make-instream "/tmp/temp"))
+;    (setq value (unless (eofp instream) (readline instream)))
+;    (shut instream)
+;  value))))
 
 \end{chunk}
 
@@ -25225,8 +25610,10 @@ The current input line.
 \getchunk{defun char-eq}
 \getchunk{defun char-ne}
 \getchunk{defun checkAddBackSlashes}
+\getchunk{defun checkAddIndented}
 \getchunk{defun checkAddMacros}
 \getchunk{defun checkAddPeriod}
+\getchunk{defun checkAddSpaces}
 \getchunk{defun checkAddSpaceSegments}
 \getchunk{defun checkAlphabetic}
 \getchunk{defun checkAndDeclare}
@@ -25242,12 +25629,15 @@ The current input line.
 \getchunk{defun checkExtract}
 \getchunk{defun checkFixCommonProblem}
 \getchunk{defun checkGetArgs}
+\getchunk{defun checkGetLispFunctionName}
 \getchunk{defun checkGetMargin}
 \getchunk{defun checkGetParse}
+\getchunk{defun checkGetStringBeforeRightBrace}
 \getchunk{defun checkHTargs}
 \getchunk{defun checkIeEg}
 \getchunk{defun checkIeEgfun}
 \getchunk{defun checkIndentedLines}
+\getchunk{defun checkIsValidType}
 \getchunk{defun checkLookForLeftBrace}
 \getchunk{defun checkLookForRightBrace}
 \getchunk{defun checkNumOfArgs}
@@ -25260,13 +25650,12 @@ The current input line.
 \getchunk{defun checkSkipIdentifierToken}
 \getchunk{defun checkSkipOpToken}
 \getchunk{defun checkSkipToken}
-\getchunk{defun checkAddIndented}
-\getchunk{defun checkAddSpaces}
 \getchunk{defun checkSplitBackslash}
 \getchunk{defun checkSplitBrace}
 \getchunk{defun checkSplitOn}
 \getchunk{defun checkSplitPunctuation}
 \getchunk{defun checkSplit2Words}
+\getchunk{defun checkTexht}
 \getchunk{defun checkTransformFirsts}
 \getchunk{defun checkTrim}
 \getchunk{defun checkTrimCommented}
diff --git a/books/ps/v9CommentRecording.eps b/books/ps/v9CommentRecording.eps
new file mode 100644
index 0000000..a8518ad
--- /dev/null
+++ b/books/ps/v9CommentRecording.eps
@@ -0,0 +1,516 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (root) root
+%%Title: pic
+%%Pages: 1
+%%BoundingBox: 36 36 555 368
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {			% width text
+	/text exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			[] 0 setdash
+			text stringwidth pop width exch sub text length div 0 text ashow
+		} if
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 555 368
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 519 332 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% postDef
+gsave
+0.000 0.000 1.000 nodecolor
+newpath 142 180 moveto
+74 180 lineto
+74 144 lineto
+142 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 1.000 nodecolor
+newpath 142 180 moveto
+74 180 lineto
+74 144 lineto
+142 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+81.5 157.9 moveto 53 (postDef) alignedtext
+grestore
+% recordHeaderDocumentation
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 216 108 moveto
+0 108 lineto
+0 72 lineto
+216 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 216 108 moveto
+0 108 lineto
+0 72 lineto
+216 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+8 85.9 moveto 200 (recordHeaderDocumentation) alignedtext
+grestore
+% postDef->recordHeaderDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 108 144 moveto
+108 136 108 127 108 118 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 111.5 118 moveto
+108 108 lineto
+104.5 118 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 111.5 118 moveto
+108 108 lineto
+104.5 118 lineto
+closepath stroke
+grestore
+% PARSE-Category
+gsave
+0.000 0.000 1.000 nodecolor
+newpath 334 324 moveto
+204 324 lineto
+204 288 lineto
+334 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 1.000 nodecolor
+newpath 334 324 moveto
+204 324 lineto
+204 288 lineto
+334 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+212 301.9 moveto 114 (PARSE-Category) alignedtext
+grestore
+% recordAttributeDocumentation
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 259 252 moveto
+31 252 lineto
+31 216 lineto
+259 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 259 252 moveto
+31 252 lineto
+31 216 lineto
+259 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+38.5 229.9 moveto 213 (recordAttributeDocumentation) alignedtext
+grestore
+% PARSE-Category->recordAttributeDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 238 288 moveto
+222 279 202 267 185 257 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 186.44 253.8 moveto
+176 252 lineto
+183.04 259.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 186.44 253.8 moveto
+176 252 lineto
+183.04 259.92 lineto
+closepath stroke
+grestore
+% recordSignatureDocumentation
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 511 252 moveto
+277 252 lineto
+277 216 lineto
+511 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 511 252 moveto
+277 252 lineto
+277 216 lineto
+511 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+285 229.9 moveto 218 (recordSignatureDocumentation) alignedtext
+grestore
+% PARSE-Category->recordSignatureDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 301 288 moveto
+317 279 337 267 354 257 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 355.96 259.92 moveto
+363 252 lineto
+352.56 253.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 355.96 259.92 moveto
+363 252 lineto
+352.56 253.8 lineto
+closepath stroke
+grestore
+% recordDocumentation
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 353 180 moveto
+187 180 lineto
+187 144 lineto
+353 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 353 180 moveto
+187 180 lineto
+187 144 lineto
+353 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+195 157.9 moveto 150 (recordDocumentation) alignedtext
+grestore
+% recordAttributeDocumentation->recordDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 177 216 moveto
+193 207 213 195 230 185 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 231.96 187.92 moveto
+239 180 lineto
+228.56 181.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 231.96 187.92 moveto
+239 180 lineto
+228.56 181.8 lineto
+closepath stroke
+grestore
+% recordSignatureDocumentation->recordDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 363 216 moveto
+347 207 327 195 310 185 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 311.44 181.8 moveto
+301 180 lineto
+308.04 187.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 311.44 181.8 moveto
+301 180 lineto
+308.04 187.92 lineto
+closepath stroke
+grestore
+% collectComBlock
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 360 108 moveto
+234 108 lineto
+234 72 lineto
+360 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 360 108 moveto
+234 108 lineto
+234 72 lineto
+360 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+241.5 85.9 moveto 111 (collectComBlock) alignedtext
+grestore
+% recordDocumentation->collectComBlock
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 277 144 moveto
+280 136 283 126 287 118 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 290.48 118.58 moveto
+290 108 lineto
+283.77 116.57 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 290.48 118.58 moveto
+290 108 lineto
+283.77 116.57 lineto
+closepath stroke
+grestore
+% recordDocumentation->recordHeaderDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 229 144 moveto
+207 134 180 122 157 112 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 158.56 108.86 moveto
+148 108 lineto
+155.72 115.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 158.56 108.86 moveto
+148 108 lineto
+155.72 115.26 lineto
+closepath stroke
+grestore
+% collectAndDeleteAssoc
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 382 36 moveto
+212 36 lineto
+212 0 lineto
+382 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 382 36 moveto
+212 36 lineto
+212 0 lineto
+382 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+219.5 13.9 moveto 155 (collectAndDeleteAssoc) alignedtext
+grestore
+% collectComBlock->collectAndDeleteAssoc
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 297 72 moveto
+297 64 297 55 297 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 300.5 46 moveto
+297 36 lineto
+293.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 300.5 46 moveto
+297 36 lineto
+293.5 46 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/books/ps/v9CommentSyntaxChecking.eps b/books/ps/v9CommentSyntaxChecking.eps
new file mode 100644
index 0000000..9d5c8c7
--- /dev/null
+++ b/books/ps/v9CommentSyntaxChecking.eps
@@ -0,0 +1,3283 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (root) root
+%%Title: hierarchy
+%%Pages: 1
+%%BoundingBox: 36 36 3662 800
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {			% width text
+	/text exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			[] 0 setdash
+			text stringwidth pop width exch sub text length div 0 text ashow
+		} if
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 3662 800
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 3626 764 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% compileDocumentation
+gsave
+0.000 0.000 1.000 nodecolor
+newpath 864 756 moveto
+690 756 lineto
+690 720 lineto
+864 720 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 1.000 nodecolor
+newpath 864 756 moveto
+690 756 lineto
+690 720 lineto
+864 720 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+698 733.9 moveto 158 (compileDocumentation) alignedtext
+grestore
+% finalizeDocumentation
+gsave
+0.278 0.750 0.533 nodecolor
+newpath 942 684 moveto
+770 684 lineto
+770 648 lineto
+942 648 lineto
+closepath fill
+1 setlinewidth
+filled
+0.278 0.750 0.533 nodecolor
+newpath 942 684 moveto
+770 684 lineto
+770 648 lineto
+942 648 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+778 661.9 moveto 156 (finalizeDocumentation) alignedtext
+grestore
+% compileDocumentation->finalizeDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 797 720 moveto
+807 711 818 701 828 691 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 830.78 693.22 moveto
+836 684 lineto
+826.17 687.95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 830.78 693.22 moveto
+836 684 lineto
+826.17 687.95 lineto
+closepath stroke
+grestore
+% finalizeLisplib
+gsave
+0.000 0.000 1.000 nodecolor
+newpath 990 756 moveto
+882 756 lineto
+882 720 lineto
+990 720 lineto
+closepath fill
+1 setlinewidth
+filled
+0.000 0.000 1.000 nodecolor
+newpath 990 756 moveto
+882 756 lineto
+882 720 lineto
+990 720 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+890 733.9 moveto 92 (finalizeLisplib) alignedtext
+grestore
+% finalizeLisplib->finalizeDocumentation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 916 720 moveto
+906 711 894 700 883 691 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 885.55 688.6 moveto
+876 684 lineto
+880.6 693.55 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 885.55 688.6 moveto
+876 684 lineto
+880.6 693.55 lineto
+closepath stroke
+grestore
+% checkAddBackSlashes
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2455 36 moveto
+2289 36 lineto
+2289 0 lineto
+2455 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2455 36 moveto
+2289 36 lineto
+2289 0 lineto
+2455 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2297 13.9 moveto 150 (checkAddBackSlashes) alignedtext
+grestore
+% checkAddMacros
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1869 36 moveto
+1741 36 lineto
+1741 0 lineto
+1869 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1869 36 moveto
+1741 36 lineto
+1741 0 lineto
+1869 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1748.5 13.9 moveto 113 (checkAddMacros) alignedtext
+grestore
+% checkAddPeriod
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 3077 36 moveto
+2953 36 lineto
+2953 0 lineto
+3077 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 3077 36 moveto
+2953 36 lineto
+2953 0 lineto
+3077 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2961 13.9 moveto 108 (checkAddPeriod) alignedtext
+grestore
+% checkAddSpaceSegments
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 3285 36 moveto
+3095 36 lineto
+3095 0 lineto
+3285 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 3285 36 moveto
+3095 36 lineto
+3095 0 lineto
+3285 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3103 13.9 moveto 174 (checkAddSpaceSegments) alignedtext
+grestore
+% checkAddSpaces
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 3618 36 moveto
+3490 36 lineto
+3490 0 lineto
+3618 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 3618 36 moveto
+3490 36 lineto
+3490 0 lineto
+3618 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3497.5 13.9 moveto 113 (checkAddSpaces) alignedtext
+grestore
+% checkAlphabetic
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2599 36 moveto
+2473 36 lineto
+2473 0 lineto
+2599 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2599 36 moveto
+2473 36 lineto
+2473 0 lineto
+2599 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2480.5 13.9 moveto 111 (checkAlphabetic) alignedtext
+grestore
+% checkIeEgfun
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2145 36 moveto
+2037 36 lineto
+2037 0 lineto
+2145 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2145 36 moveto
+2037 36 lineto
+2037 0 lineto
+2145 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2045 13.9 moveto 92 (checkIeEgfun) alignedtext
+grestore
+% checkIsValidType
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 285 36 moveto
+155 36 lineto
+155 0 lineto
+285 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 285 36 moveto
+155 36 lineto
+155 0 lineto
+285 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+162.5 13.9 moveto 115 (checkIsValidType) alignedtext
+grestore
+% checkLookForLeftBrace
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1003 36 moveto
+827 36 lineto
+827 0 lineto
+1003 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1003 36 moveto
+827 36 lineto
+827 0 lineto
+1003 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+835 13.9 moveto 160 (checkLookForLeftBrace) alignedtext
+grestore
+% checkLookForRightBrace
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 641 36 moveto
+455 36 lineto
+455 0 lineto
+641 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 641 36 moveto
+455 36 lineto
+455 0 lineto
+641 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+463 13.9 moveto 170 (checkLookForRightBrace) alignedtext
+grestore
+% checkNumOfArgs
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 437 36 moveto
+303 36 lineto
+303 0 lineto
+437 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 437 36 moveto
+303 36 lineto
+303 0 lineto
+437 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+311 13.9 moveto 118 (checkNumOfArgs) alignedtext
+grestore
+% checkSayBracket
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2019 36 moveto
+1887 36 lineto
+1887 0 lineto
+2019 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2019 36 moveto
+1887 36 lineto
+1887 0 lineto
+2019 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1894.5 13.9 moveto 117 (checkSayBracket) alignedtext
+grestore
+% checkSkipBlanks
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2747 36 moveto
+2617 36 lineto
+2617 0 lineto
+2747 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2747 36 moveto
+2617 36 lineto
+2617 0 lineto
+2747 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2625 13.9 moveto 114 (checkSkipBlanks) alignedtext
+grestore
+% checkSplitBackslash
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1599 36 moveto
+1447 36 lineto
+1447 0 lineto
+1599 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1599 36 moveto
+1447 36 lineto
+1447 0 lineto
+1599 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1454.5 13.9 moveto 137 (checkSplitBackslash) alignedtext
+grestore
+% checkSplitOn
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1723 36 moveto
+1617 36 lineto
+1617 0 lineto
+1723 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1723 36 moveto
+1617 36 lineto
+1617 0 lineto
+1723 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1625 13.9 moveto 90 (checkSplitOn) alignedtext
+grestore
+% checkSplitPunctuation
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1429 36 moveto
+1259 36 lineto
+1259 0 lineto
+1429 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1429 36 moveto
+1259 36 lineto
+1259 0 lineto
+1429 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1267 13.9 moveto 154 (checkSplitPunctuation) alignedtext
+grestore
+% firstNonBlankPosition
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 3467 36 moveto
+3303 36 lineto
+3303 0 lineto
+3467 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 3467 36 moveto
+3303 36 lineto
+3303 0 lineto
+3467 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3311 13.9 moveto 148 (firstNonBlankPosition) alignedtext
+grestore
+% getMatchingRightPren
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2935 36 moveto
+2765 36 lineto
+2765 0 lineto
+2935 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2935 36 moveto
+2765 36 lineto
+2765 0 lineto
+2935 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2772.5 13.9 moveto 155 (getMatchingRightPren) alignedtext
+grestore
+% hasNoVowels
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 2271 36 moveto
+2163 36 lineto
+2163 0 lineto
+2271 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 2271 36 moveto
+2163 36 lineto
+2163 0 lineto
+2271 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2171 13.9 moveto 92 (hasNoVowels) alignedtext
+grestore
+% htcharPosition
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 137 36 moveto
+23 36 lineto
+23 0 lineto
+137 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 137 36 moveto
+23 36 lineto
+23 0 lineto
+137 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+30.5 13.9 moveto 99 (htcharPosition) alignedtext
+grestore
+% newWordFrom
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1241 36 moveto
+1125 36 lineto
+1125 0 lineto
+1241 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1241 36 moveto
+1125 36 lineto
+1125 0 lineto
+1241 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1132.5 13.9 moveto 101 (newWordFrom) alignedtext
+grestore
+% removeBackslashes
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 809 36 moveto
+659 36 lineto
+659 0 lineto
+809 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 809 36 moveto
+659 36 lineto
+659 0 lineto
+809 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+667 13.9 moveto 134 (removeBackslashes) alignedtext
+grestore
+% whoOwns
+gsave
+0.167 0.600 1.000 nodecolor
+newpath 1107 36 moveto
+1021 36 lineto
+1021 0 lineto
+1107 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.167 0.600 1.000 nodecolor
+newpath 1107 36 moveto
+1021 36 lineto
+1021 0 lineto
+1107 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1029 13.9 moveto 70 (whoOwns) alignedtext
+grestore
+% checkAddIndented
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 3056 108 moveto
+2914 108 lineto
+2914 72 lineto
+3056 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 3056 108 moveto
+2914 108 lineto
+2914 72 lineto
+3056 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2921.5 85.9 moveto 127 (checkAddIndented) alignedtext
+grestore
+% checkAddIndented->checkAddSpaceSegments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3036 72 moveto
+3064 62 3099 50 3129 39 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3130.43 42.23 moveto
+3139 36 lineto
+3128.42 35.52 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3130.43 42.23 moveto
+3139 36 lineto
+3128.42 35.52 lineto
+closepath stroke
+grestore
+% checkAddIndented->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3056 74 moveto
+3059 73 3062 72 3065 72 curveto
+3163 53 3190 53 3293 36 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3293.88 39.39 moveto
+3303 34 lineto
+3292.51 32.53 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3293.88 39.39 moveto
+3303 34 lineto
+3292.51 32.53 lineto
+closepath stroke
+grestore
+% checkDocMessage
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 1217 108 moveto
+1077 108 lineto
+1077 72 lineto
+1217 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 1217 108 moveto
+1077 108 lineto
+1077 72 lineto
+1217 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1085 85.9 moveto 124 (checkDocMessage) alignedtext
+grestore
+% checkDocMessage->whoOwns
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1126 72 moveto
+1116 63 1103 52 1092 43 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1093.83 39.95 moveto
+1084 36 lineto
+1089.22 45.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1093.83 39.95 moveto
+1084 36 lineto
+1089.22 45.22 lineto
+closepath stroke
+grestore
+% checkExtract
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 3532 108 moveto
+3428 108 lineto
+3428 72 lineto
+3532 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 3532 108 moveto
+3428 108 lineto
+3428 72 lineto
+3532 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3435.5 85.9 moveto 89 (checkExtract) alignedtext
+grestore
+% checkExtract->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3456 72 moveto
+3445 63 3430 52 3417 42 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3419.1 39.2 moveto
+3409 36 lineto
+3414.9 44.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3419.1 39.2 moveto
+3409 36 lineto
+3414.9 44.8 lineto
+closepath stroke
+grestore
+% checkGetArgs
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 2858 108 moveto
+2748 108 lineto
+2748 72 lineto
+2858 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 2858 108 moveto
+2748 108 lineto
+2748 72 lineto
+2858 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2755.5 85.9 moveto 95 (checkGetArgs) alignedtext
+grestore
+% checkGetArgs->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2858 79 moveto
+2873 77 2890 74 2905 72 curveto
+3074 48 3120 60 3293 36 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3293.4 39.48 moveto
+3303 35 lineto
+3292.7 32.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3293.4 39.48 moveto
+3303 35 lineto
+3292.7 32.51 lineto
+closepath stroke
+grestore
+% checkGetArgs->getMatchingRightPren
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2815 72 moveto
+2820 64 2827 54 2833 44 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2835.67 46.34 moveto
+2838 36 lineto
+2829.73 42.62 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2835.67 46.34 moveto
+2838 36 lineto
+2829.73 42.62 lineto
+closepath stroke
+grestore
+% checkGetMargin
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 3372 108 moveto
+3244 108 lineto
+3244 72 lineto
+3372 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 3372 108 moveto
+3244 108 lineto
+3244 72 lineto
+3372 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3252 85.9 moveto 112 (checkGetMargin) alignedtext
+grestore
+% checkGetMargin->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3327 72 moveto
+3337 63 3348 53 3358 43 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3360.78 45.22 moveto
+3366 36 lineto
+3356.17 39.95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3360.78 45.22 moveto
+3366 36 lineto
+3356.17 39.95 lineto
+closepath stroke
+grestore
+% checkGetParse
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 706 108 moveto
+588 108 lineto
+588 72 lineto
+706 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 706 108 moveto
+588 108 lineto
+588 72 lineto
+706 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+596 85.9 moveto 102 (checkGetParse) alignedtext
+grestore
+% checkGetParse->removeBackslashes
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 669 72 moveto
+680 63 693 52 704 42 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 706.1 44.8 moveto
+712 36 lineto
+701.9 39.2 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 706.1 44.8 moveto
+712 36 lineto
+701.9 39.2 lineto
+closepath stroke
+grestore
+% checkGetStringBeforeRightBrace
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 532 108 moveto
+290 108 lineto
+290 72 lineto
+532 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 532 108 moveto
+290 108 lineto
+290 72 lineto
+532 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+297.5 85.9 moveto 227 (checkGetStringBeforeRightBrace) alignedtext
+grestore
+% checkIeEg
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 2212 108 moveto
+2128 108 lineto
+2128 72 lineto
+2212 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 2212 108 moveto
+2128 108 lineto
+2128 72 lineto
+2212 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2135.5 85.9 moveto 69 (checkIeEg) alignedtext
+grestore
+% checkIeEg->checkIeEgfun
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2150 72 moveto
+2140 63 2129 53 2119 43 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2120.83 39.95 moveto
+2111 36 lineto
+2116.22 45.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2120.83 39.95 moveto
+2111 36 lineto
+2116.22 45.22 lineto
+closepath stroke
+grestore
+% checkIndentedLines
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 3226 108 moveto
+3074 108 lineto
+3074 72 lineto
+3226 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 3226 108 moveto
+3074 108 lineto
+3074 72 lineto
+3226 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+3081.5 85.9 moveto 137 (checkIndentedLines) alignedtext
+grestore
+% checkIndentedLines->checkAddSpaceSegments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3160 72 moveto
+3164 64 3170 54 3175 45 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3178.2 46.44 moveto
+3180 36 lineto
+3172.08 43.04 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3178.2 46.44 moveto
+3180 36 lineto
+3172.08 43.04 lineto
+closepath stroke
+grestore
+% checkIndentedLines->firstNonBlankPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 3209 72 moveto
+3242 62 3283 49 3317 39 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3318.43 42.23 moveto
+3327 36 lineto
+3316.42 35.52 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3318.43 42.23 moveto
+3327 36 lineto
+3316.42 35.52 lineto
+closepath stroke
+grestore
+% checkSkipIdentifierToken
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 2654 108 moveto
+2468 108 lineto
+2468 72 lineto
+2654 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 2654 108 moveto
+2468 108 lineto
+2468 72 lineto
+2654 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2476 85.9 moveto 170 (checkSkipIdentifierToken) alignedtext
+grestore
+% checkSkipIdentifierToken->checkAlphabetic
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2555 72 moveto
+2552 64 2549 54 2545 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2548.23 44.57 moveto
+2542 36 lineto
+2541.52 46.58 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2548.23 44.57 moveto
+2542 36 lineto
+2541.52 46.58 lineto
+closepath stroke
+grestore
+% checkSkipOpToken
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 2450 108 moveto
+2306 108 lineto
+2306 72 lineto
+2450 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 2450 108 moveto
+2306 108 lineto
+2306 72 lineto
+2450 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2314 85.9 moveto 128 (checkSkipOpToken) alignedtext
+grestore
+% checkSkipOpToken->checkAlphabetic
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2418 72 moveto
+2439 62 2465 50 2488 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2489.28 43.26 moveto
+2497 36 lineto
+2486.44 36.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2489.28 43.26 moveto
+2497 36 lineto
+2486.44 36.86 lineto
+closepath stroke
+grestore
+% checkSplitBrace
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 1732 108 moveto
+1608 108 lineto
+1608 72 lineto
+1732 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 1732 108 moveto
+1608 108 lineto
+1608 72 lineto
+1732 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1615.5 85.9 moveto 109 (checkSplitBrace) alignedtext
+grestore
+% checkSplitBrace->checkSplitBackslash
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1633 72 moveto
+1613 62 1589 51 1568 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1569.56 36.86 moveto
+1559 36 lineto
+1566.72 43.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1569.56 36.86 moveto
+1559 36 lineto
+1566.72 43.26 lineto
+closepath stroke
+grestore
+% checkSplitBrace->checkSplitOn
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1670 72 moveto
+1670 64 1670 55 1670 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1673.5 46 moveto
+1670 36 lineto
+1666.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1673.5 46 moveto
+1670 36 lineto
+1666.5 46 lineto
+closepath stroke
+grestore
+% checkSplitBrace->checkSplitPunctuation
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1608 74 moveto
+1605 73 1602 73 1599 72 curveto
+1547 60 1487 47 1439 37 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1439.49 33.53 moveto
+1429 35 lineto
+1438.12 40.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1439.49 33.53 moveto
+1429 35 lineto
+1438.12 40.39 lineto
+closepath stroke
+grestore
+% checkTrimCommented
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 170 108 moveto
+2 108 lineto
+2 72 lineto
+170 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 170 108 moveto
+2 108 lineto
+2 72 lineto
+170 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+10 85.9 moveto 152 (checkTrimCommented) alignedtext
+grestore
+% checkTrimCommented->htcharPosition
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 84 72 moveto
+83 64 83 55 82 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 85.5 46 moveto
+82 36 lineto
+78.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 85.5 46 moveto
+82 36 lineto
+78.5 46 lineto
+closepath stroke
+grestore
+% newString2Words
+gsave
+0.333 0.857 0.933 nodecolor
+newpath 1590 108 moveto
+1450 108 lineto
+1450 72 lineto
+1590 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 0.857 0.933 nodecolor
+newpath 1590 108 moveto
+1450 108 lineto
+1450 72 lineto
+1590 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1457.5 85.9 moveto 125 (newString2Words) alignedtext
+grestore
+% newString2Words->newWordFrom
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1450 77 moveto
+1397 67 1324 52 1251 36 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1251.49 32.53 moveto
+1241 34 lineto
+1250.12 39.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1251.49 32.53 moveto
+1241 34 lineto
+1250.12 39.39 lineto
+closepath stroke
+grestore
+% checkDocError
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 1259 180 moveto
+1143 180 lineto
+1143 144 lineto
+1259 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 1259 180 moveto
+1143 180 lineto
+1143 144 lineto
+1259 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1150.5 157.9 moveto 101 (checkDocError) alignedtext
+grestore
+% checkDocError->checkDocMessage
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1187 144 moveto
+1181 136 1173 125 1166 116 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1168.8 113.9 moveto
+1160 108 lineto
+1163.2 118.1 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1168.8 113.9 moveto
+1160 108 lineto
+1163.2 118.1 lineto
+closepath stroke
+grestore
+% checkRemoveComments
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 182 180 moveto
+0 180 lineto
+0 144 lineto
+182 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 182 180 moveto
+0 180 lineto
+0 144 lineto
+182 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+7.5 157.9 moveto 167 (checkRemoveComments) alignedtext
+grestore
+% checkRemoveComments->checkTrimCommented
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 90 144 moveto
+89 136 89 127 88 118 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 91.48 117.6 moveto
+87 108 lineto
+84.51 118.3 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 91.48 117.6 moveto
+87 108 lineto
+84.51 118.3 lineto
+closepath stroke
+grestore
+% checkSkipToken
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 2566 180 moveto
+2442 180 lineto
+2442 144 lineto
+2566 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 2566 180 moveto
+2442 180 lineto
+2442 144 lineto
+2566 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2450 157.9 moveto 108 (checkSkipToken) alignedtext
+grestore
+% checkSkipToken->checkSkipIdentifierToken
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2518 144 moveto
+2525 135 2533 125 2541 116 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2543.8 118.1 moveto
+2547 108 lineto
+2538.2 113.9 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2543.8 118.1 moveto
+2547 108 lineto
+2538.2 113.9 lineto
+closepath stroke
+grestore
+% checkSkipToken->checkSkipOpToken
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2472 144 moveto
+2456 135 2436 123 2418 113 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2419.44 109.8 moveto
+2409 108 lineto
+2416.04 115.92 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2419.44 109.8 moveto
+2409 108 lineto
+2416.04 115.92 lineto
+closepath stroke
+grestore
+% checkSplit2Words
+gsave
+0.667 0.846 0.867 nodecolor
+newpath 1957 180 moveto
+1819 180 lineto
+1819 144 lineto
+1957 144 lineto
+closepath fill
+1 setlinewidth
+filled
+0.667 0.846 0.867 nodecolor
+newpath 1957 180 moveto
+1819 180 lineto
+1819 144 lineto
+1957 144 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1827 157.9 moveto 122 (checkSplit2Words) alignedtext
+grestore
+% checkSplit2Words->checkSplitBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1833 144 moveto
+1803 134 1766 122 1734 111 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1734.58 107.52 moveto
+1724 108 lineto
+1732.57 114.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1734.58 107.52 moveto
+1724 108 lineto
+1732.57 114.23 lineto
+closepath stroke
+grestore
+% checkBeginEnd
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 2074 252 moveto
+1954 252 lineto
+1954 216 lineto
+2074 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 2074 252 moveto
+1954 252 lineto
+1954 216 lineto
+2074 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1962 229.9 moveto 104 (checkBeginEnd) alignedtext
+grestore
+% checkBeginEnd->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1954 226 moveto
+1926 223 1893 219 1864 216 curveto
+1646 194 1389 175 1269 167 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 163.51 moveto
+1259 166 lineto
+1268.6 170.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 163.51 moveto
+1259 166 lineto
+1268.6 170.48 lineto
+closepath stroke
+grestore
+% checkDecorate
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 2377 252 moveto
+2259 252 lineto
+2259 216 lineto
+2377 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 2377 252 moveto
+2259 252 lineto
+2259 216 lineto
+2377 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2267 229.9 moveto 102 (checkDecorate) alignedtext
+grestore
+% checkDecorate->checkAddBackSlashes
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2309 216 moveto
+2295 184 2272 119 2297 72 curveto
+2303 60 2313 50 2324 42 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2326.62 44.46 moveto
+2333 36 lineto
+2322.74 38.63 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2326.62 44.46 moveto
+2333 36 lineto
+2322.74 38.63 lineto
+closepath stroke
+grestore
+% checkDecorate->hasNoVowels
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2305 216 moveto
+2297 206 2288 192 2282 180 curveto
+2258 135 2237 79 2226 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2229.23 44.57 moveto
+2223 36 lineto
+2222.52 46.58 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2229.23 44.57 moveto
+2223 36 lineto
+2222.52 46.58 lineto
+closepath stroke
+grestore
+% checkDecorate->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2259 229 moveto
+2211 225 2143 220 2083 216 curveto
+1779 195 1417 174 1269 166 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 162.51 moveto
+1259 165 lineto
+1268.6 169.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 162.51 moveto
+1259 165 lineto
+1268.6 169.48 lineto
+closepath stroke
+grestore
+% checkDecorateForHt
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1350 252 moveto
+1194 252 lineto
+1194 216 lineto
+1350 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1350 252 moveto
+1194 252 lineto
+1194 216 lineto
+1350 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1202 229.9 moveto 140 (checkDecorateForHt) alignedtext
+grestore
+% checkDecorateForHt->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1254 216 moveto
+1245 207 1235 197 1226 188 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1228.22 185.22 moveto
+1219 180 lineto
+1222.95 189.83 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1228.22 185.22 moveto
+1219 180 lineto
+1222.95 189.83 lineto
+closepath stroke
+grestore
+% checkDocError1
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 964 252 moveto
+838 252 lineto
+838 216 lineto
+964 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 964 252 moveto
+838 252 lineto
+838 216 lineto
+964 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+846 229.9 moveto 110 (checkDocError1) alignedtext
+grestore
+% checkDocError1->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 964 218 moveto
+967 217 970 217 973 216 curveto
+1027 203 1088 188 1133 177 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1133.88 180.39 moveto
+1143 175 lineto
+1132.51 173.53 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1133.88 180.39 moveto
+1143 175 lineto
+1132.51 173.53 lineto
+closepath stroke
+grestore
+% checkFixCommonProblem
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1784 252 moveto
+1592 252 lineto
+1592 216 lineto
+1784 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1784 252 moveto
+1592 252 lineto
+1592 216 lineto
+1784 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1600 229.9 moveto 176 (checkFixCommonProblem) alignedtext
+grestore
+% checkFixCommonProblem->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1592 217 moveto
+1589 217 1586 216 1583 216 curveto
+1473 199 1345 182 1269 171 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 167.51 moveto
+1259 170 lineto
+1268.6 174.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 167.51 moveto
+1259 170 lineto
+1268.6 174.48 lineto
+closepath stroke
+grestore
+% checkGetLispFunctionName
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1574 252 moveto
+1368 252 lineto
+1368 216 lineto
+1574 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1574 252 moveto
+1368 252 lineto
+1368 216 lineto
+1574 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1375.5 229.9 moveto 191 (checkGetLispFunctionName) alignedtext
+grestore
+% checkGetLispFunctionName->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1403 216 moveto
+1362 205 1310 191 1269 181 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.58 177.52 moveto
+1259 178 lineto
+1267.57 184.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.58 177.52 moveto
+1259 178 lineto
+1267.57 184.23 lineto
+closepath stroke
+grestore
+% checkHTargs
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 782 252 moveto
+680 252 lineto
+680 216 lineto
+782 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 782 252 moveto
+680 252 lineto
+680 216 lineto
+782 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+688 229.9 moveto 86 (checkHTargs) alignedtext
+grestore
+% checkHTargs->checkLookForLeftBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 746 216 moveto
+779 177 855 88 893 44 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 896.05 45.83 moveto
+900 36 lineto
+890.78 41.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 896.05 45.83 moveto
+900 36 lineto
+890.78 41.22 lineto
+closepath stroke
+grestore
+% checkHTargs->checkLookForRightBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 735 216 moveto
+741 183 749 114 715 72 curveto
+705 59 675 47 643 39 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 643.58 35.52 moveto
+633 36 lineto
+641.57 42.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 643.58 35.52 moveto
+633 36 lineto
+641.57 42.23 lineto
+closepath stroke
+grestore
+% checkHTargs->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 782 219 moveto
+787 218 791 217 796 216 curveto
+913 192 1051 176 1133 168 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 171.48 moveto
+1143 167 lineto
+1132.7 164.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 171.48 moveto
+1143 167 lineto
+1132.7 164.51 lineto
+closepath stroke
+grestore
+% checkRecordHash
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 662 252 moveto
+526 252 lineto
+526 216 lineto
+662 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 662 252 moveto
+526 252 lineto
+526 216 lineto
+662 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+534 229.9 moveto 120 (checkRecordHash) alignedtext
+grestore
+% checkRecordHash->checkIsValidType
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 526 219 moveto
+521 218 516 217 512 216 curveto
+430 199 399 223 327 180 curveto
+277 148 245 83 230 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 232.96 43.98 moveto
+226 36 lineto
+226.46 46.58 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 232.96 43.98 moveto
+226 36 lineto
+226.46 46.58 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkLookForLeftBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 621 216 moveto
+678 177 815 85 880 42 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 882.1 44.8 moveto
+888 36 lineto
+877.9 39.2 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 882.1 44.8 moveto
+888 36 lineto
+877.9 39.2 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkLookForRightBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 526 216 moveto
+443 193 309 150 281 108 curveto
+273 94 271 84 281 72 curveto
+284 68 371 52 445 37 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 445.88 40.39 moveto
+455 35 lineto
+444.51 33.53 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 445.88 40.39 moveto
+455 35 lineto
+444.51 33.53 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkNumOfArgs
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 593 216 moveto
+591 183 581 112 541 72 curveto
+534 65 489 50 447 39 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 447.58 35.52 moveto
+437 36 lineto
+445.57 42.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 447.58 35.52 moveto
+437 36 lineto
+445.57 42.23 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkGetParse
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 601 216 moveto
+610 191 626 147 637 118 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 640.48 118.58 moveto
+640 108 lineto
+633.77 116.57 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 640.48 118.58 moveto
+640 108 lineto
+633.77 116.57 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkGetStringBeforeRightBrace
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 571 216 moveto
+538 190 478 143 442 114 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 444.1 111.2 moveto
+434 108 lineto
+439.9 116.8 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 444.1 111.2 moveto
+434 108 lineto
+439.9 116.8 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 662 217 moveto
+665 217 668 216 671 216 curveto
+835 188 1031 173 1133 166 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 169.48 moveto
+1143 165 lineto
+1132.7 162.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 169.48 moveto
+1143 165 lineto
+1132.7 162.51 lineto
+closepath stroke
+grestore
+% checkRecordHash->checkGetLispFunctionName
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 630 252 moveto
+645 259 663 266 680 270 curveto
+753 284 1276 280 1350 270 curveto
+1371 267 1392 261 1411 255 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1412.43 258.23 moveto
+1421 252 lineto
+1410.42 251.52 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1412.43 258.23 moveto
+1421 252 lineto
+1410.42 251.52 lineto
+closepath stroke
+grestore
+% checkTexht
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1176 252 moveto
+1084 252 lineto
+1084 216 lineto
+1176 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1176 252 moveto
+1084 252 lineto
+1084 216 lineto
+1176 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1091.5 229.9 moveto 77 (checkTexht) alignedtext
+grestore
+% checkTexht->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1148 216 moveto
+1157 207 1167 197 1176 188 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1179.05 189.83 moveto
+1183 180 lineto
+1173.78 185.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1179.05 189.83 moveto
+1183 180 lineto
+1173.78 185.22 lineto
+closepath stroke
+grestore
+% checkTransformFirsts
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 2584 252 moveto
+2424 252 lineto
+2424 216 lineto
+2584 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 2584 252 moveto
+2424 252 lineto
+2424 216 lineto
+2584 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2432 229.9 moveto 144 (checkTransformFirsts) alignedtext
+grestore
+% checkTransformFirsts->checkSkipBlanks
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2539 216 moveto
+2576 195 2633 157 2663 108 curveto
+2674 90 2678 65 2681 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2684.49 46.3 moveto
+2682 36 lineto
+2677.52 45.6 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2684.49 46.3 moveto
+2682 36 lineto
+2677.52 45.6 lineto
+closepath stroke
+grestore
+% checkTransformFirsts->getMatchingRightPren
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2554 216 moveto
+2577 207 2604 194 2626 180 curveto
+2683 141 2681 111 2739 72 curveto
+2756 60 2777 49 2795 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2796.28 43.26 moveto
+2804 36 lineto
+2793.44 36.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2796.28 43.26 moveto
+2804 36 lineto
+2793.44 36.86 lineto
+closepath stroke
+grestore
+% checkTransformFirsts->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2424 221 moveto
+2411 219 2398 217 2386 216 curveto
+2166 194 1488 171 1269 164 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269 160.5 moveto
+1259 164 lineto
+1269 167.5 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269 160.5 moveto
+1259 164 lineto
+1269 167.5 lineto
+closepath stroke
+grestore
+% checkTransformFirsts->checkSkipToken
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2504 216 moveto
+2504 208 2504 199 2504 190 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2507.5 190 moveto
+2504 180 lineto
+2500.5 190 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2507.5 190 moveto
+2504 180 lineto
+2500.5 190 lineto
+closepath stroke
+grestore
+% checkTrim
+gsave
+0.067 1.000 1.000 nodecolor
+newpath 1066 252 moveto
+982 252 lineto
+982 216 lineto
+1066 216 lineto
+closepath fill
+1 setlinewidth
+filled
+0.067 1.000 1.000 nodecolor
+newpath 1066 252 moveto
+982 252 lineto
+982 216 lineto
+1066 216 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+990 229.9 moveto 68 (checkTrim) alignedtext
+grestore
+% checkTrim->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1066 217 moveto
+1090 207 1121 194 1147 184 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1148.28 187.26 moveto
+1156 180 lineto
+1145.44 180.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1148.28 187.26 moveto
+1156 180 lineto
+1145.44 180.86 lineto
+closepath stroke
+grestore
+% checkArguments
+gsave
+0.600 1.000 1.000 nodecolor
+newpath 1670 324 moveto
+1540 324 lineto
+1540 288 lineto
+1670 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.600 1.000 1.000 nodecolor
+newpath 1670 324 moveto
+1540 324 lineto
+1540 288 lineto
+1670 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1547.5 301.9 moveto 115 (checkArguments) alignedtext
+grestore
+% checkArguments->checkHTargs
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1540 304 moveto
+1406 299 1091 285 829 252 curveto
+817 250 804 248 792 246 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 792.49 242.53 moveto
+782 244 lineto
+791.12 249.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 792.49 242.53 moveto
+782 244 lineto
+791.12 249.39 lineto
+closepath stroke
+grestore
+% checkBalance
+gsave
+0.600 1.000 1.000 nodecolor
+newpath 2100 324 moveto
+1992 324 lineto
+1992 288 lineto
+2100 288 lineto
+closepath fill
+1 setlinewidth
+filled
+0.600 1.000 1.000 nodecolor
+newpath 2100 324 moveto
+1992 324 lineto
+1992 288 lineto
+2100 288 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1999.5 301.9 moveto 93 (checkBalance) alignedtext
+grestore
+% checkBalance->checkSayBracket
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2062 288 moveto
+2070 278 2079 265 2083 252 curveto
+2087 236 2087 231 2083 216 curveto
+2063 146 2009 79 1978 44 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1980.22 41.22 moveto
+1971 36 lineto
+1974.95 45.83 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1980.22 41.22 moveto
+1971 36 lineto
+1974.95 45.83 lineto
+closepath stroke
+grestore
+% checkBalance->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2006 288 moveto
+1956 267 1870 233 1793 216 curveto
+1694 194 1402 174 1269 166 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 162.51 moveto
+1259 165 lineto
+1268.6 169.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1269.3 162.51 moveto
+1259 165 lineto
+1268.6 169.48 lineto
+closepath stroke
+grestore
+% checkBalance->checkBeginEnd
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2038 288 moveto
+2034 280 2030 270 2026 261 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2029.26 259.72 moveto
+2022 252 lineto
+2022.86 262.56 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2029.26 259.72 moveto
+2022 252 lineto
+2022.86 262.56 lineto
+closepath stroke
+grestore
+% checkComments
+gsave
+0.333 1.000 0.400 nodecolor
+newpath 2363 396 moveto
+2235 396 lineto
+2235 360 lineto
+2363 360 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 1.000 0.400 nodecolor
+newpath 2363 396 moveto
+2235 396 lineto
+2235 360 lineto
+2363 360 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+2242.5 373.9 moveto 113 (checkComments) alignedtext
+grestore
+% checkComments->checkAddPeriod
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 376 moveto
+2503 371 2825 355 2862 324 curveto
+2893 297 2886 275 2886 234 curveto
+2886 234 2886 234 2886 162 curveto
+2886 121 2879 104 2905 72 curveto
+2915 59 2930 48 2945 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2946.28 43.26 moveto
+2954 36 lineto
+2943.44 36.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2946.28 43.26 moveto
+2954 36 lineto
+2943.44 36.86 lineto
+closepath stroke
+grestore
+% checkComments->checkAddSpaces
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 375 moveto
+2510 369 2869 351 2987 324 curveto
+3244 265 3376 314 3541 108 curveto
+3555 90 3557 65 3557 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3560.48 45.6 moveto
+3556 36 lineto
+3553.51 46.3 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3560.48 45.6 moveto
+3556 36 lineto
+3553.51 46.3 lineto
+closepath stroke
+grestore
+% checkComments->checkGetArgs
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 369 moveto
+2444 354 2586 321 2687 252 curveto
+2737 217 2773 154 2791 117 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2794.14 118.56 moveto
+2795 108 lineto
+2787.74 115.72 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2794.14 118.56 moveto
+2795 108 lineto
+2787.74 115.72 lineto
+closepath stroke
+grestore
+% checkComments->checkGetMargin
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 376 moveto
+2503 372 2832 359 2937 324 curveto
+3077 276 3221 165 3279 115 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3281.78 117.22 moveto
+3287 108 lineto
+3277.17 111.95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3281.78 117.22 moveto
+3287 108 lineto
+3277.17 111.95 lineto
+closepath stroke
+grestore
+% checkComments->checkIeEg
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2291 360 moveto
+2269 311 2208 176 2182 117 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2185.26 115.72 moveto
+2178 108 lineto
+2178.86 118.56 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2185.26 115.72 moveto
+2178 108 lineto
+2178.86 118.56 lineto
+closepath stroke
+grestore
+% checkComments->checkIndentedLines
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2363 375 moveto
+2508 366 2851 345 2900 324 curveto
+3005 277 3094 167 3131 116 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3133.8 118.1 moveto
+3137 108 lineto
+3128.2 113.9 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3133.8 118.1 moveto
+3137 108 lineto
+3128.2 113.9 lineto
+closepath stroke
+grestore
+% checkComments->newString2Words
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2269 360 moveto
+2252 350 2231 336 2213 324 curveto
+2168 293 2155 287 2116 252 curveto
+2099 237 2102 226 2083 216 curveto
+1974 159 1928 212 1810 180 curveto
+1770 169 1764 157 1726 144 curveto
+1703 136 1647 121 1600 109 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1600.49 105.53 moveto
+1590 107 lineto
+1599.12 112.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1600.49 105.53 moveto
+1590 107 lineto
+1599.12 112.39 lineto
+closepath stroke
+grestore
+% checkComments->checkSplit2Words
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2284 360 moveto
+2255 326 2188 254 2116 216 curveto
+2070 192 2013 179 1967 171 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1967.49 167.53 moveto
+1957 169 lineto
+1966.12 174.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1967.49 167.53 moveto
+1957 169 lineto
+1966.12 174.39 lineto
+closepath stroke
+grestore
+% checkComments->checkDecorate
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2301 360 moveto
+2305 335 2311 291 2315 262 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2318.49 262.3 moveto
+2316 252 lineto
+2311.52 261.6 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2318.49 262.3 moveto
+2316 252 lineto
+2311.52 261.6 lineto
+closepath stroke
+grestore
+% checkComments->checkFixCommonProblem
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2235 369 moveto
+2170 360 2069 344 1983 324 curveto
+1901 304 1808 275 1750 255 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1750.58 251.52 moveto
+1740 252 lineto
+1748.57 258.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1750.58 251.52 moveto
+1740 252 lineto
+1748.57 258.23 lineto
+closepath stroke
+grestore
+% checkComments->checkTransformFirsts
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2325 360 moveto
+2361 334 2429 287 2470 258 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2472.1 260.8 moveto
+2478 252 lineto
+2467.9 255.2 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2472.1 260.8 moveto
+2478 252 lineto
+2467.9 255.2 lineto
+closepath stroke
+grestore
+% checkComments->checkArguments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2235 371 moveto
+2106 358 1818 329 1680 314 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1680.3 310.51 moveto
+1670 313 lineto
+1679.6 317.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1680.3 310.51 moveto
+1670 313 lineto
+1679.6 317.48 lineto
+closepath stroke
+grestore
+% checkComments->checkBalance
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 2235 360 moveto
+2197 349 2149 335 2110 325 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2110.58 321.52 moveto
+2100 322 lineto
+2108.57 328.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2110.58 321.52 moveto
+2100 322 lineto
+2108.57 328.23 lineto
+closepath stroke
+grestore
+% checkRewrite
+gsave
+0.333 1.000 0.400 nodecolor
+newpath 1847 396 moveto
+1739 396 lineto
+1739 360 lineto
+1847 360 lineto
+closepath fill
+1 setlinewidth
+filled
+0.333 1.000 0.400 nodecolor
+newpath 1847 396 moveto
+1739 396 lineto
+1739 360 lineto
+1847 360 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1746.5 373.9 moveto 93 (checkRewrite) alignedtext
+grestore
+% checkRewrite->checkAddMacros
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1812 360 moveto
+1853 319 1950 222 1966 180 curveto
+1988 118 1913 68 1858 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1859.56 36.86 moveto
+1849 36 lineto
+1856.72 43.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1859.56 36.86 moveto
+1849 36 lineto
+1856.72 43.26 lineto
+closepath stroke
+grestore
+% checkRewrite->checkAddSpaces
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1847 376 moveto
+1957 371 2211 357 2424 324 curveto
+2854 257 2996 313 3381 108 curveto
+3401 97 3399 84 3419 72 curveto
+3439 59 3463 48 3486 40 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3487.28 43.26 moveto
+3495 36 lineto
+3484.44 36.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3487.28 43.26 moveto
+3495 36 lineto
+3484.44 36.86 lineto
+closepath stroke
+grestore
+% checkRewrite->checkAddIndented
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1847 376 moveto
+1983 371 2346 347 2630 252 curveto
+2727 219 2740 185 2834 144 curveto
+2861 132 2892 121 2919 111 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2919.62 114.48 moveto
+2928 108 lineto
+2917.41 107.84 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2919.62 114.48 moveto
+2928 108 lineto
+2917.41 107.84 lineto
+closepath stroke
+grestore
+% checkRewrite->checkGetArgs
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1847 371 moveto
+1910 362 2018 345 2109 324 curveto
+2162 311 2173 298 2228 288 curveto
+2387 256 2441 312 2593 252 curveto
+2633 236 2727 156 2774 115 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2776.78 117.22 moveto
+2782 108 lineto
+2772.17 111.95 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2776.78 117.22 moveto
+2782 108 lineto
+2772.17 111.95 lineto
+closepath stroke
+grestore
+% checkRewrite->newString2Words
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1799 360 moveto
+1808 328 1821 260 1793 216 curveto
+1769 179 1659 136 1587 111 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1587.58 107.52 moveto
+1577 108 lineto
+1585.57 114.23 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1587.58 107.52 moveto
+1577 108 lineto
+1585.57 114.23 lineto
+closepath stroke
+grestore
+% checkRewrite->checkRemoveComments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1739 376 moveto
+1610 370 1273 354 993 324 curveto
+781 300 728 290 517 252 curveto
+400 231 266 201 180 182 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 180.49 178.53 moveto
+170 180 lineto
+179.12 185.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 180.49 178.53 moveto
+170 180 lineto
+179.12 185.39 lineto
+closepath stroke
+grestore
+% checkRewrite->checkSplit2Words
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1805 360 moveto
+1812 350 1820 336 1826 324 curveto
+1849 278 1868 223 1879 190 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1882.48 190.58 moveto
+1882 180 lineto
+1875.77 188.57 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1882.48 190.58 moveto
+1882 180 lineto
+1875.77 188.57 lineto
+closepath stroke
+grestore
+% checkRewrite->checkDecorateForHt
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1778 360 moveto
+1756 335 1720 292 1712 288 curveto
+1644 253 1451 263 1360 251 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1360.3 247.51 moveto
+1350 250 lineto
+1359.6 254.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1360.3 247.51 moveto
+1350 250 lineto
+1359.6 254.48 lineto
+closepath stroke
+grestore
+% checkRewrite->checkFixCommonProblem
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1787 360 moveto
+1779 341 1767 310 1750 288 curveto
+1741 277 1731 267 1721 259 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1722.83 255.95 moveto
+1713 252 lineto
+1718.22 261.22 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1722.83 255.95 moveto
+1713 252 lineto
+1718.22 261.22 lineto
+closepath stroke
+grestore
+% checkRewrite->checkRecordHash
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1739 372 moveto
+1535 351 816 274 672 252 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 672.49 248.53 moveto
+662 250 lineto
+671.12 255.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 672.49 248.53 moveto
+662 250 lineto
+671.12 255.39 lineto
+closepath stroke
+grestore
+% checkRewrite->checkTexht
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1762 360 moveto
+1746 350 1727 337 1712 324 curveto
+1695 309 1698 297 1679 288 curveto
+1582 241 1308 271 1186 252 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1186.49 248.53 moveto
+1176 250 lineto
+1185.12 255.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1186.49 248.53 moveto
+1176 250 lineto
+1185.12 255.39 lineto
+closepath stroke
+grestore
+% checkRewrite->checkArguments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1746 360 moveto
+1720 350 1689 338 1661 328 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1662.56 324.86 moveto
+1652 324 lineto
+1659.72 331.26 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1662.56 324.86 moveto
+1652 324 lineto
+1659.72 331.26 lineto
+closepath stroke
+grestore
+% transformAndRecheckComments
+gsave
+0.278 0.750 0.533 nodecolor
+newpath 1913 468 moveto
+1673 468 lineto
+1673 432 lineto
+1913 432 lineto
+closepath fill
+1 setlinewidth
+filled
+0.278 0.750 0.533 nodecolor
+newpath 1913 468 moveto
+1673 468 lineto
+1673 432 lineto
+1913 432 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+1681 445.9 moveto 224 (transformAndRecheckComments) alignedtext
+grestore
+% transformAndRecheckComments->checkComments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1913 433 moveto
+2010 420 2143 401 2225 388 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 2225.4 391.48 moveto
+2235 387 lineto
+2224.7 384.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 2225.4 391.48 moveto
+2235 387 lineto
+2224.7 384.51 lineto
+closepath stroke
+grestore
+% transformAndRecheckComments->checkRewrite
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1793 432 moveto
+1793 424 1793 415 1793 406 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1796.5 406 moveto
+1793 396 lineto
+1789.5 406 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1796.5 406 moveto
+1793 396 lineto
+1789.5 406 lineto
+closepath stroke
+grestore
+% transDoc
+gsave
+0.278 0.750 0.533 nodecolor
+newpath 1063 540 moveto
+985 540 lineto
+985 504 lineto
+1063 504 lineto
+closepath fill
+1 setlinewidth
+filled
+0.278 0.750 0.533 nodecolor
+newpath 1063 540 moveto
+985 540 lineto
+985 504 lineto
+1063 504 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+993 517.9 moveto 62 (transDoc) alignedtext
+grestore
+% transDoc->checkExtract
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1063 522 moveto
+1381 521 3522 507 3522 378 curveto
+3522 378 3522 378 3522 234 curveto
+3522 192 3505 146 3493 117 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 3496.26 115.72 moveto
+3489 108 lineto
+3489.86 118.56 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 3496.26 115.72 moveto
+3489 108 lineto
+3489.86 118.56 lineto
+closepath stroke
+grestore
+% transDoc->checkDocError1
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1016 504 moveto
+995 455 938 320 913 261 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 916.26 259.72 moveto
+909 252 lineto
+909.86 262.56 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 916.26 259.72 moveto
+909 252 lineto
+909.86 262.56 lineto
+closepath stroke
+grestore
+% transDoc->checkTrim
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1024 504 moveto
+1024 455 1024 321 1024 262 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1027.5 262 moveto
+1024 252 lineto
+1020.5 262 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1027.5 262 moveto
+1024 252 lineto
+1020.5 262 lineto
+closepath stroke
+grestore
+% transDoc->transformAndRecheckComments
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1063 518 moveto
+1173 508 1484 479 1663 462 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1663.4 465.48 moveto
+1673 461 lineto
+1662.7 458.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1663.4 465.48 moveto
+1673 461 lineto
+1662.7 458.51 lineto
+closepath stroke
+grestore
+% transDocList
+gsave
+0.278 0.750 0.533 nodecolor
+newpath 907 612 moveto
+805 612 lineto
+805 576 lineto
+907 576 lineto
+closepath fill
+1 setlinewidth
+filled
+0.278 0.750 0.533 nodecolor
+newpath 907 612 moveto
+805 612 lineto
+805 576 lineto
+907 576 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+812.5 589.9 moveto 87 (transDocList) alignedtext
+grestore
+% transDocList->checkDocError
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 846 576 moveto
+833 549 810 497 810 450 curveto
+810 450 810 450 810 306 curveto
+810 265 800 243 829 216 curveto
+851 196 1031 176 1133 168 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 171.48 moveto
+1143 167 lineto
+1132.7 164.51 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 1133.4 171.48 moveto
+1143 167 lineto
+1132.7 164.51 lineto
+closepath stroke
+grestore
+% transDocList->checkDocError1
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 856 576 moveto
+856 548 857 495 856 450 curveto
+856 450 856 450 856 378 curveto
+857 335 874 290 887 261 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 890.14 262.56 moveto
+891 252 lineto
+883.74 259.72 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 890.14 262.56 moveto
+891 252 lineto
+883.74 259.72 lineto
+closepath stroke
+grestore
+% transDocList->transDoc
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 898 576 moveto
+922 566 951 553 976 543 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 977.28 546.26 moveto
+985 539 lineto
+974.44 539.86 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 977.28 546.26 moveto
+985 539 lineto
+974.44 539.86 lineto
+closepath stroke
+grestore
+% finalizeDocumentation->transDocList
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 856 648 moveto
+856 640 856 631 856 622 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 859.5 622 moveto
+856 612 lineto
+852.5 622 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 859.5 622 moveto
+856 612 lineto
+852.5 622 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index 6f213a0..a50041b 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20111215 tpd src/axiom-website/patches.html 20111215.01.tpd.patch
+20111215 tpd books/ps/v9CommentSyntaxChecking.eps comment syntax chapter
+20111215 tpd books/ps/v9CommentRecording.eps comment recording chapter
+20111215 tpd books/bookvol9 add comment graphs
 20111208 tpd src/axiom-website/patches.html 20111208.05.tpd.patch
 20111208 tpd books/bookvolbib add additional references
 20111208 tpd src/axiom-website/patches.html 20111208.04.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 851ed6f..0011e82 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3735,5 +3735,7 @@ books/bookvol5 treeshake interpreter<br/>
 books/bookvol9 code cleanup<br/>
 <a href="patches/20111208.05.tpd.patch">20111208.05.tpd.patch</a>
 books/bookvolbib add additional references<br/>
+<a href="patches/20111215.01.tpd.patch">20111215.01.tpd.patch</a>
+books/bookvol9 add comment graphs<br/>
  </body>
 </html>
