Run these demo scripts through reindent.py to give them 4-space indents.  I've verified that their output is unchanged.
diff --git a/Demo/comparisons/regextest.py b/Demo/comparisons/regextest.py
index 97564b7..e4e18d6 100755
--- a/Demo/comparisons/regextest.py
+++ b/Demo/comparisons/regextest.py
@@ -1,13 +1,13 @@
 #! /usr/bin/env python
 
 # 1)  Regular Expressions Test
-# 
-#     Read a file of (extended per egrep) regular expressions (one per line), 
+#
+#     Read a file of (extended per egrep) regular expressions (one per line),
 #     and apply those to all files whose names are listed on the command line.
 #     Basically, an 'egrep -f' simulator.  Test it with 20 "vt100" patterns
 #     against a five /etc/termcap files.  Tests using more elaborate patters
 #     would also be interesting.  Your code should not break if given hundreds
-#     of regular expressions or binary files to scan.  
+#     of regular expressions or binary files to scan.
 
 # This implementation:
 # - combines all patterns into a single one using ( ... | ... | ... )
@@ -24,27 +24,27 @@
 regex.set_syntax(RE_SYNTAX_EGREP)
 
 def main():
-	pats = map(chomp, sys.stdin.readlines())
-	bigpat = '(' + string.joinfields(pats, '|') + ')'
-	prog = regex.compile(bigpat)
-	
-	for file in sys.argv[1:]:
-		try:
-			fp = open(file, 'r')
-		except IOError, msg:
-			print "%s: %s" % (file, msg)
-			continue
-		lineno = 0
-		while 1:
-			line = fp.readline()
-			if not line:
-				break
-			lineno = lineno + 1
-			if prog.search(line) >= 0:
-				print "%s:%s:%s" % (file, lineno, line),
+    pats = map(chomp, sys.stdin.readlines())
+    bigpat = '(' + string.joinfields(pats, '|') + ')'
+    prog = regex.compile(bigpat)
+
+    for file in sys.argv[1:]:
+        try:
+            fp = open(file, 'r')
+        except IOError, msg:
+            print "%s: %s" % (file, msg)
+            continue
+        lineno = 0
+        while 1:
+            line = fp.readline()
+            if not line:
+                break
+            lineno = lineno + 1
+            if prog.search(line) >= 0:
+                print "%s:%s:%s" % (file, lineno, line),
 
 def chomp(s):
-	if s[-1:] == '\n': return s[:-1]
-	else: return s
+    if s[-1:] == '\n': return s[:-1]
+    else: return s
 
 main()
diff --git a/Demo/comparisons/sortingtest.py b/Demo/comparisons/sortingtest.py
index d6c213c..8fe2bbb 100755
--- a/Demo/comparisons/sortingtest.py
+++ b/Demo/comparisons/sortingtest.py
@@ -1,17 +1,17 @@
 #! /usr/bin/env python
 
 # 2)  Sorting Test
-# 
+#
 #     Sort an input file that consists of lines like this
-# 
+#
 #         var1=23 other=14 ditto=23 fred=2
-# 
+#
 #     such that each output line is sorted WRT to the number.  Order
 #     of output lines does not change.  Resolve collisions using the
 #     variable name.   e.g.
-# 
-#         fred=2 other=14 ditto=23 var1=23 
-# 
+#
+#         fred=2 other=14 ditto=23 var1=23
+#
 #     Lines may be up to several kilobytes in length and contain
 #     zillions of variables.
 
@@ -28,23 +28,23 @@
 import sys
 
 def main():
-	prog = regex.compile('^\(.*\)=\([-+]?[0-9]+\)')
-	def makekey(item, prog=prog):
-		if prog.match(item) >= 0:
-			var, num = prog.group(1, 2)
-			return string.atoi(num), var
-		else:
-			# Bad input -- pretend it's a var with value 0
-			return 0, item
-	while 1:
-		line = sys.stdin.readline()
-		if not line:
-			break
-		items = string.split(line)
-		items = map(makekey, items)
-		items.sort()
-		for num, var in items:
-			print "%s=%s" % (var, num),
-		print
+    prog = regex.compile('^\(.*\)=\([-+]?[0-9]+\)')
+    def makekey(item, prog=prog):
+        if prog.match(item) >= 0:
+            var, num = prog.group(1, 2)
+            return string.atoi(num), var
+        else:
+            # Bad input -- pretend it's a var with value 0
+            return 0, item
+    while 1:
+        line = sys.stdin.readline()
+        if not line:
+            break
+        items = string.split(line)
+        items = map(makekey, items)
+        items.sort()
+        for num, var in items:
+            print "%s=%s" % (var, num),
+        print
 
 main()
diff --git a/Demo/comparisons/systemtest.py b/Demo/comparisons/systemtest.py
index f2533b1..bbc313b 100755
--- a/Demo/comparisons/systemtest.py
+++ b/Demo/comparisons/systemtest.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 
 # 3)  System Test
-# 
+#
 #     Given a list of directories, report any bogus symbolic links contained
 #     anywhere in those subtrees.  A bogus symbolic link is one that cannot
 #     be resolved because it points to a nonexistent or otherwise
@@ -21,54 +21,54 @@
 from stat import *
 
 def main():
-	try:
-		# Note: can't test for presence of lstat -- it's always there
-		dummy = os.readlink
-	except AttributeError:
-		print "This system doesn't have symbolic links"
-		sys.exit(0)
-	if sys.argv[1:]:
-		prefix = sys.argv[1]
-	else:
-		prefix = ''
-	if prefix:
-		os.chdir(prefix)
-		if prefix[-1:] != '/': prefix = prefix + '/'
-		reportboguslinks(prefix)
-	else:
-		reportboguslinks('')
+    try:
+        # Note: can't test for presence of lstat -- it's always there
+        dummy = os.readlink
+    except AttributeError:
+        print "This system doesn't have symbolic links"
+        sys.exit(0)
+    if sys.argv[1:]:
+        prefix = sys.argv[1]
+    else:
+        prefix = ''
+    if prefix:
+        os.chdir(prefix)
+        if prefix[-1:] != '/': prefix = prefix + '/'
+        reportboguslinks(prefix)
+    else:
+        reportboguslinks('')
 
 def reportboguslinks(prefix):
-	try:
-		names = os.listdir('.')
-	except os.error, msg:
-		print "%s%s: can't list: %s" % (prefix, '.', msg)
-		return
-	names.sort()
-	for name in names:
-		if name == os.curdir or name == os.pardir:
-			continue
-		try:
-			mode = os.lstat(name)[ST_MODE]
-		except os.error:
-			print "%s%s: can't stat: %s" % (prefix, name, msg)
-			continue
-		if S_ISLNK(mode):
-			try:
-				os.stat(name)
-			except os.error:
-				print "%s%s -> %s" % \
-				      (prefix, name, os.readlink(name))
-		elif S_ISDIR(mode):
-			try:
-				os.chdir(name)
-			except os.error, msg:
-				print "%s%s: can't chdir: %s" % \
-				      (prefix, name, msg)
-				continue
-			try:
-				reportboguslinks(prefix + name + '/')
-			finally:
-				os.chdir('..')
+    try:
+        names = os.listdir('.')
+    except os.error, msg:
+        print "%s%s: can't list: %s" % (prefix, '.', msg)
+        return
+    names.sort()
+    for name in names:
+        if name == os.curdir or name == os.pardir:
+            continue
+        try:
+            mode = os.lstat(name)[ST_MODE]
+        except os.error:
+            print "%s%s: can't stat: %s" % (prefix, name, msg)
+            continue
+        if S_ISLNK(mode):
+            try:
+                os.stat(name)
+            except os.error:
+                print "%s%s -> %s" % \
+                      (prefix, name, os.readlink(name))
+        elif S_ISDIR(mode):
+            try:
+                os.chdir(name)
+            except os.error, msg:
+                print "%s%s: can't chdir: %s" % \
+                      (prefix, name, msg)
+                continue
+            try:
+                reportboguslinks(prefix + name + '/')
+            finally:
+                os.chdir('..')
 
 main()