SF #754014:  list.index() should accept optional start, end arguments

Also, modified UserList.index() to match and expanded the related tests.
diff --git a/Lib/UserList.py b/Lib/UserList.py
index 76cf31f..dd1b927 100644
--- a/Lib/UserList.py
+++ b/Lib/UserList.py
@@ -75,7 +75,7 @@
     def pop(self, i=-1): return self.data.pop(i)
     def remove(self, item): self.data.remove(item)
     def count(self, item): return self.data.count(item)
-    def index(self, item): return self.data.index(item)
+    def index(self, item, *args): return self.data.index(item, *args)
     def reverse(self): self.data.reverse()
     def sort(self, *args): self.data.sort(*args)
     def extend(self, other):
diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py
index 1cb1484..9599456 100644
--- a/Lib/test/test_types.py
+++ b/Lib/test/test_types.py
@@ -366,7 +366,23 @@
 if b != ["left",-2,-1,0,0,"foo",1,2,"right"]: raise TestFailed, 'list insert2'
 if a.count(0) != 2: raise TestFailed, ' list count'
 if a.index(0) != 2: raise TestFailed, 'list index'
+if a.index(0,2) != 2: raise TestFailed, 'list index, start argument'
+if a.index(-2,-10) != 0: raise TestFailed, 'list index, negative start argument'
+if a.index(0,3) != 3: raise TestFailed, 'list index, start argument'
+if a.index(0,3,4) != 3: raise TestFailed, 'list index, stop argument'
+try:
+    a.index(2,0,-10)
+except ValueError:
+    pass
+else:
+    raise TestFailed, 'list index, negative stop argument'
 a.remove(0)
+try:
+    a.index(2,0,4)
+except ValueError:
+    pass
+else:
+    raise TestFailed, 'list index, stop argument.'
 if a != [-2,-1,0,1,2]: raise TestFailed, 'list remove'
 a.reverse()
 if a != [2,1,0,-1,-2]: raise TestFailed, 'list reverse'
diff --git a/Lib/test/test_userlist.py b/Lib/test/test_userlist.py
index 467a47c..2d11a24 100644
--- a/Lib/test/test_userlist.py
+++ b/Lib/test/test_userlist.py
@@ -206,6 +206,15 @@
         self.assertEqual(u.index(1), 1)
         self.assertRaises(ValueError, u.index, 2)
 
+        u = UserList([-2,-1,0,0,1,2])
+        self.assertEqual(u.count(0), 2)
+        self.assertEqual(u.index(0), 2)
+        self.assertEqual(u.index(0,2), 2)
+        self.assertEqual(u.index(-2,-10), 0)
+        self.assertEqual(u.index(0,3), 3)
+        self.assertEqual(u.index(0,3,4), 3)
+        self.assertRaises(ValueError, u.index, 2,0,-10)
+
     def test_reverse(self):
         u = UserList((0, 1))
         u2 = u[:]