Index: test/keystrokes/firefox/label_guess_bugzilla_search.py
===================================================================
--- test/keystrokes/firefox/label_guess_bugzilla_search.py	(revision 4409)
+++ test/keystrokes/firefox/label_guess_bugzilla_search.py	(working copy)
@@ -494,8 +494,7 @@
 sequence.append(PauseAction(1000))
 sequence.append(utils.AssertPresentationAction(
     "Next form field", 
-    ["BUG? - extra space between by: and Reuse",
-     "BRAILLE LINE:  'Sort results by:  Reuse same sort as last time Combo'",
+    ["BRAILLE LINE:  'Sort results by: Reuse same sort as last time Combo'",
      "     VISIBLE:  'Reuse same sort as last time Com', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Sort results by: Reuse same sort as last time combo box'"]))
Index: test/keystrokes/firefox/html_role_combo_box.py
===================================================================
--- test/keystrokes/firefox/html_role_combo_box.py	(revision 4409)
+++ test/keystrokes/firefox/html_role_combo_box.py	(working copy)
@@ -61,8 +61,8 @@
 sequence.append(utils.AssertPresentationAction(
     "Tab to Severity combo box", 
     ["BUG? - Where should the cursor be? If we're not IN the combo box should it be as is with the label showing or not?",
-     "BRAILLE LINE:  'Severity:  Severity normal Combo'",
-     "     VISIBLE:  'Severity:  Severity normal Combo', cursor=21",
+     "BRAILLE LINE:  'Severity: Severity normal Combo'",
+     "     VISIBLE:  'Severity: Severity normal Combo', cursor=20",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Severity normal combo box'"]))
 
@@ -84,8 +84,8 @@
 sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_COMBO_BOX))
 sequence.append(utils.AssertPresentationAction(
     "Tab to Priority combo box", 
-    ["BRAILLE LINE:  'Priority:  Normal Combo'",
-     "     VISIBLE:  'Priority:  Normal Combo', cursor=12",
+    ["BRAILLE LINE:  'Priority: Normal Combo'",
+     "     VISIBLE:  'Priority: Normal Combo', cursor=11",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Priority: Normal combo box'"]))
 
@@ -120,8 +120,8 @@
 sequence.append(KeyComboAction("<Alt>Down"))
 sequence.append(utils.AssertPresentationAction(
     "Alt Down to Expand",
-    ["BRAILLE LINE:  'Priority:  Normal Combo'",
-     "     VISIBLE:  'Priority:  Normal Combo', cursor=0",
+    ["BRAILLE LINE:  'Priority: Normal Combo'",
+     "     VISIBLE:  'Priority: Normal Combo', cursor=0",
      "BRAILLE LINE:  'Normal'",
      "     VISIBLE:  'Normal', cursor=1",
      "SPEECH OUTPUT: ''",
@@ -148,8 +148,8 @@
 sequence.append(KeyComboAction("Return"))
 sequence.append(utils.AssertPresentationAction(
     "Return to collapse combo box",
-    ["BRAILLE LINE:  'Priority:  Low Combo'",
-     "     VISIBLE:  'Priority:  Low Combo', cursor=12",
+    ["BRAILLE LINE:  'Priority: Low Combo'",
+     "     VISIBLE:  'Priority: Low Combo', cursor=11",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Priority: Low combo box'"]))
 
Index: test/keystrokes/firefox/line_nav_wiki.py
===================================================================
--- test/keystrokes/firefox/line_nav_wiki.py	(revision 4409)
+++ test/keystrokes/firefox/line_nav_wiki.py	(working copy)
@@ -897,36 +897,32 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BUG? - There's an extra space here",
-     "BRAILLE LINE:  '•  Python Pocket Reference, Mark Lutz'",
-     "     VISIBLE:  '•  Python Pocket Reference, Mark', cursor=1",
+    ["BRAILLE LINE:  '• Python Pocket Reference, Mark Lutz'",
+     "     VISIBLE:  '• Python Pocket Reference, Mark ', cursor=1",
      "SPEECH OUTPUT: '• Python Pocket Reference, Mark Lutz link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BUG? - There's an extra space here",
-     "BRAILLE LINE:  '•  Python in a Nutshell, Alex Martelli'",
-     "     VISIBLE:  '•  Python in a Nutshell, Alex Ma', cursor=1",
+    ["BRAILLE LINE:  '• Python in a Nutshell, Alex Martelli'",
+     "     VISIBLE:  '• Python in a Nutshell, Alex Mar', cursor=1",
      "SPEECH OUTPUT: '• Python in a Nutshell, Alex Martelli link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BUG? - There's an extra space here",
-     "BRAILLE LINE:  '•  Dive Into Python, Mark Pilgrim'",
-     "     VISIBLE:  '•  Dive Into Python, Mark Pilgri', cursor=1",
+    ["BRAILLE LINE:  '• Dive Into Python, Mark Pilgrim'",
+     "     VISIBLE:  '• Dive Into Python, Mark Pilgrim', cursor=1",
      "SPEECH OUTPUT: '• Dive Into Python, Mark Pilgrim link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BUG? - There's an extra space here",
-     "BRAILLE LINE:  '• Design documents:  Orca Documentation Series'",
-     "     VISIBLE:  '• Design documents:  Orca Docume', cursor=1",
+    ["BRAILLE LINE:  '• Design documents: Orca Documentation Series'",
+     "     VISIBLE:  '• Design documents: Orca Documen', cursor=1",
      "SPEECH OUTPUT: '• Design documents: Orca Documentation Series link'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -949,8 +945,8 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  '• Frequently Asked Questions:  FAQ'",
-     "     VISIBLE:  '• Frequently Asked Questions:  F', cursor=1",
+    ["BRAILLE LINE:  '• Frequently Asked Questions: FAQ'",
+     "     VISIBLE:  '• Frequently Asked Questions: FA', cursor=1",
      "SPEECH OUTPUT: '• Frequently Asked Questions: FAQ link'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -1205,24 +1201,24 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up", 
-    ["BRAILLE LINE:  '•  Guide to installing the latest versions of Firefox and Orca'",
-     "     VISIBLE:  '•  Guide to installing the lates', cursor=1",
+    ["BRAILLE LINE:  '• Guide to installing the latest versions of Firefox and Orca'",
+     "     VISIBLE:  '• Guide to installing the latest', cursor=1",
      "SPEECH OUTPUT: '• Guide to installing the latest versions of Firefox and Orca link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up", 
-    ["BRAILLE LINE:  '•  Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop'",
-     "     VISIBLE:  '•  Review of Fedora 7 and the Or', cursor=1",
+    ["BRAILLE LINE:  '• Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop'",
+     "     VISIBLE:  '• Review of Fedora 7 and the Orc', cursor=1",
      "SPEECH OUTPUT: '• Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up", 
-    ["BRAILLE LINE:  '•  Walk through of the installation of Ubuntu 7.4. Very helpful tutorial'",
-     "     VISIBLE:  '•  Walk through of the installat', cursor=1",
+    ["BRAILLE LINE:  '• Walk through of the installation of Ubuntu 7.4. Very helpful tutorial'",
+     "     VISIBLE:  '• Walk through of the installati', cursor=1",
      "SPEECH OUTPUT: '• Walk through of the installation of Ubuntu 7.4. Very helpful tutorial link'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -1437,9 +1433,8 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up", 
-    ["BUG? - Extra space",
-     "BRAILLE LINE:  'HOT HOT HOT: Notes on  access to Firefox 3.0'",
-     "     VISIBLE:  'HOT HOT HOT: Notes on  access to', cursor=1",
+    ["BRAILLE LINE:  'HOT HOT HOT: Notes on access to Firefox 3.0'",
+     "     VISIBLE:  'HOT HOT HOT: Notes on access to ', cursor=1",
      "SPEECH OUTPUT: 'HOT HOT HOT: Notes on access to Firefox 3.0 link'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -1494,7 +1489,7 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'live.gnome.org h1 Search $l Titles Button  Text Button'",
+    ["BRAILLE LINE:  'live.gnome.org h1 Search $l Titles Button Text Button'",
      "     VISIBLE:  'live.gnome.org h1 Search $l Titl', cursor=1",
      "SPEECH OUTPUT: 'live.gnome.org heading level 1 text Search Titles button grayed Text button grayed'"]))
 
Index: test/keystrokes/firefox/dojo_tabcontainer.py
===================================================================
--- test/keystrokes/firefox/dojo_tabcontainer.py	(revision 4409)
+++ test/keystrokes/firefox/dojo_tabcontainer.py	(working copy)
@@ -36,7 +36,7 @@
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "tab to tab 2", 
-    ["BRAILLE LINE:  'TabList Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page'",
+    ["BRAILLE LINE:  'Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page'",
      "     VISIBLE:  'Tab 2 Page Tab 3 Page Inlined Su', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Tab 2 page'"]))
@@ -49,7 +49,7 @@
 sequence.append(PauseAction(3000))
 sequence.append(utils.AssertPresentationAction(
     "basic whereAmI", 
-    ["BRAILLE LINE:  'TabList Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page'",
+    ["BRAILLE LINE:  'Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page'",
      "     VISIBLE:  'Tab 2 Page Tab 3 Page Inlined Su', cursor=1",
      "SPEECH OUTPUT: 'tab list'",
      "SPEECH OUTPUT: 'Tab 2 page'",
@@ -64,7 +64,7 @@
 sequence.append(utils.AssertPresentationAction(
     "arrow to tab 3", 
     ["BUG? - Should panel be at the end of the line? If not, the braille generator should deal with it.",
-     "BRAILLE LINE:  'TabList Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page Tab 3 Page Panel'",
+     "BRAILLE LINE:  'Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page Tab 3 Page Panel'",
      "     VISIBLE:  'Tab 3 Page Inlined Sub TabContai', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Tab 3 page'"]))
@@ -76,7 +76,7 @@
 sequence.append(utils.AssertPresentationAction(
     "arrow to programmatically created tab", 
     ["BUG? - Should panel be at the end of the line? If not, the braille generator should deal with it. Note that we don't always see it either.... Very strange....",
-     "BRAILLE LINE:  'TabList Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page Inlined Sub TabContainer Page Panel'",
+     "BRAILLE LINE:  'Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page Inlined Sub TabContainer Page Panel'",
      "     VISIBLE:  'Inlined Sub TabContainer Page Su', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Inlined Sub TabContainer page'"]))
@@ -89,7 +89,7 @@
 sequence.append(PauseAction(1000))
 sequence.append(utils.AssertPresentationAction(
     "arrow to sub tab container", 
-    ["BRAILLE LINE:  'TabList Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page'",
+    ["BRAILLE LINE:  'Tab 1 Page Tab 2 Page Tab 3 Page Inlined Sub TabContainer Page Sub TabContainer from href Page SplitContainer from href Page'",
      "     VISIBLE:  'Sub TabContainer from href Page ', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Sub TabContainer from href page'",
@@ -102,7 +102,7 @@
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "tab to tab 2 contents", 
-    ["BRAILLE LINE:  'TabList Subtab #1 Page Subtab #2 Page'",
+    ["BRAILLE LINE:  'Subtab #1 Page Subtab #2 Page'",
      "     VISIBLE:  'Subtab #1 Page Subtab #2 Page', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Subtab #1 page'"]))
Index: test/keystrokes/firefox/dojo_dialog.py
===================================================================
--- test/keystrokes/firefox/dojo_dialog.py	(revision 4409)
+++ test/keystrokes/firefox/dojo_dialog.py	(working copy)
@@ -73,7 +73,7 @@
 sequence.append(WaitForFocus("First tab", acc_role=pyatspi.ROLE_PAGE_TAB))
 sequence.append(utils.AssertPresentationAction(
     "Launch dialog", 
-    ["BRAILLE LINE:  'TabList First tab Page Second tab Page'",
+    ["BRAILLE LINE:  'First tab Page Second tab Page'",
      "     VISIBLE:  'First tab Page Second tab Page', cursor=1",
      "SPEECH OUTPUT: 'TabContainer Dialog dialog'",
      "SPEECH OUTPUT: 'First tab page'"]))
@@ -87,7 +87,7 @@
 sequence.append(PauseAction(3000))
 sequence.append(utils.AssertPresentationAction(
     "Basic whereAmI", 
-    ["BRAILLE LINE:  'TabList First tab Page Second tab Page'",
+    ["BRAILLE LINE:  'First tab Page Second tab Page'",
      "     VISIBLE:  'First tab Page Second tab Page', cursor=1",
      "SPEECH OUTPUT: 'tab list'",
      "SPEECH OUTPUT: 'First tab page'",
Index: test/keystrokes/firefox/label_guess_entries.py
===================================================================
--- test/keystrokes/firefox/label_guess_entries.py	(revision 4409)
+++ test/keystrokes/firefox/label_guess_entries.py	(working copy)
@@ -420,9 +420,9 @@
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "Next form field", 
-    ["BRAILLE LINE:  'Magic disappearing text trick:  tab to me and I disappear $l'",
+    ["BRAILLE LINE:  'Magic disappearing text trick: tab to me and I disappear $l'",
      "     VISIBLE:  'tab to me and I disappear $l', cursor=26",
-     "BRAILLE LINE:  'Magic disappearing text trick:   $l'",
+     "BRAILLE LINE:  'Magic disappearing text trick:  $l'",
      "     VISIBLE:  ' $l', cursor=1",
      "SPEECH OUTPUT: 'Magic disappearing text trick: text'"]))
 
@@ -432,8 +432,8 @@
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "Next form field", 
-    ["BRAILLE LINE:  'Tell me a secret:   $l'",
-     "     VISIBLE:  'Tell me a secret:   $l', cursor=20",
+    ["BRAILLE LINE:  'Tell me a secret:  $l'",
+     "     VISIBLE:  'Tell me a secret:  $l', cursor=19",
      "SPEECH OUTPUT: 'Tell me a secret: password'"]))
 
 sequence.append(utils.StartRecordingAction())
Index: test/keystrokes/firefox/label_guess_bug_509809.py
===================================================================
--- test/keystrokes/firefox/label_guess_bug_509809.py	(revision 4409)
+++ test/keystrokes/firefox/label_guess_bug_509809.py	(working copy)
@@ -57,7 +57,7 @@
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "Next form field", 
-    ["BRAILLE LINE:  'search mozilla: search mozilla:  $l  Go Button'",
+    ["BRAILLE LINE:  'search mozilla: search mozilla:  $l Go Button'",
      "     VISIBLE:  'Go Button', cursor=1",
      "SPEECH OUTPUT: 'Go button'"]))
 
Index: test/keystrokes/firefox/line_nav_bug_547573.py
===================================================================
--- test/keystrokes/firefox/line_nav_bug_547573.py	(revision 4409)
+++ test/keystrokes/firefox/line_nav_bug_547573.py	(working copy)
@@ -1481,16 +1481,16 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "71. Line Up",
-    ["BRAILLE LINE:  '•  Java Web Start Installation Notes'",
-     "     VISIBLE:  '•  Java Web Start Installation N', cursor=1",
+    ["BRAILLE LINE:  '• Java Web Start Installation Notes'",
+     "     VISIBLE:  '• Java Web Start Installation No', cursor=1",
      "SPEECH OUTPUT: '• Java Web Start Installation Notes link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "72. Line Up",
-    ["BRAILLE LINE:  '•  Java Plugin Browser Registration Instructions'",
-     "     VISIBLE:  '•  Java Plugin Browser Registrat', cursor=1",
+    ["BRAILLE LINE:  '• Java Plugin Browser Registration Instructions'",
+     "     VISIBLE:  '• Java Plugin Browser Registrati', cursor=1",
      "SPEECH OUTPUT: '• Java Plugin Browser Registration Instructions link'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -1655,15 +1655,15 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "93. Line Up",
-    ["BRAILLE LINE:  '» search tips  Search $l  Submit Search Button Home Page Image $l'",
-     "     VISIBLE:  '» search tips  Search $l  Submit', cursor=1",
+    ["BRAILLE LINE:  '» search tips  Search $l Submit Search Button Home Page Image $l'",
+     "     VISIBLE:  '» search tips  Search $l Submit ', cursor=1",
      "SPEECH OUTPUT: '»  search tips link   text Search Submit Search button Home Page link image'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "94. Line Up",
-    ["BRAILLE LINE:  'Skip to Content Sun Java Solaris Communities My SDN Account  Join SDN'",
+    ["BRAILLE LINE:  'Skip to Content Sun Java Solaris Communities My SDN Account Join SDN'",
      "     VISIBLE:  'Skip to Content Sun Java Solaris', cursor=1",
      "SPEECH OUTPUT: 'Skip to Content link Sun link Java link Solaris link Communities link My SDN Account link Join SDN link'"]))
 
Index: test/keystrokes/firefox/line_nav_bugzilla_search.py
===================================================================
--- test/keystrokes/firefox/line_nav_bugzilla_search.py	(revision 4409)
+++ test/keystrokes/firefox/line_nav_bugzilla_search.py	(working copy)
@@ -637,8 +637,8 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  '--- Combo --- Combo   $l Or Button'",
-     "     VISIBLE:  '--- Combo --- Combo   $l Or Butt', cursor=0",
+    ["BRAILLE LINE:  '--- Combo --- Combo  $l Or Button'",
+     "     VISIBLE:  '--- Combo --- Combo  $l Or Butto', cursor=0",
      "SPEECH OUTPUT: '--- combo box --- combo box text Or button'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -685,8 +685,8 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'Sort results by:  Reuse same sort as last time Combo'",
-     "     VISIBLE:  'Sort results by:  Reuse same sor', cursor=1",
+    ["BRAILLE LINE:  'Sort results by: Reuse same sort as last time Combo'",
+     "     VISIBLE:  'Sort results by: Reuse same sort', cursor=1",
      "SPEECH OUTPUT: 'Sort results by: Reuse same sort as last time combo box'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -1166,7 +1166,7 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'New bug · Browse · Search · Reports · Account · Admin ·  Help Logged In joanmarie.diggs@gmail.com |  Log Out'",
+    ["BRAILLE LINE:  'New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie.diggs@gmail.com | Log Out'",
      "     VISIBLE:  'New bug · Browse · Search · Repo', cursor=1",
      "SPEECH OUTPUT: 'New bug link  · Browse link  · Search link  · Reports link  · Account link  · Admin link  · Help link Logged In joanmarie.diggs@gmail.com | Log Out link'"]))
 
Index: test/keystrokes/firefox/uiuc_tabpanel.py
===================================================================
--- test/keystrokes/firefox/uiuc_tabpanel.py	(revision 4409)
+++ test/keystrokes/firefox/uiuc_tabpanel.py	(working copy)
@@ -32,7 +32,7 @@
 sequence.append(KeyComboAction("Right"))
 sequence.append(utils.AssertPresentationAction(
     "Navigate to second tab", 
-    ["BRAILLE LINE:  'TabList TabList TabList TabList Crust Page Veges Page Carnivore Page Delivery Page'",
+    ["BRAILLE LINE:  'Crust Page Veges Page Carnivore Page Delivery Page'",
      "     VISIBLE:  'Veges Page Carnivore Page Delive', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Veges page'"]))
@@ -44,7 +44,7 @@
 sequence.append(KeyComboAction("Right"))
 sequence.append(utils.AssertPresentationAction(
     "Navigate to third tab", 
-    ["BRAILLE LINE:  'TabList TabList TabList TabList Crust Page Veges Page Carnivore Page Delivery Page'",
+    ["BRAILLE LINE:  'Crust Page Veges Page Carnivore Page Delivery Page'",
      "     VISIBLE:  'Carnivore Page Delivery Page', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Carnivore page'"]))
@@ -57,7 +57,7 @@
 sequence.append(PauseAction(3000))
 sequence.append(utils.AssertPresentationAction(
     "basic whereAmI", 
-    ["BRAILLE LINE:  'TabList TabList TabList TabList Crust Page Veges Page Carnivore Page Delivery Page'",
+    ["BRAILLE LINE:  'Crust Page Veges Page Carnivore Page Delivery Page'",
      "     VISIBLE:  'Carnivore Page Delivery Page', cursor=1",
      "SPEECH OUTPUT: 'tab list'",
      "SPEECH OUTPUT: 'Carnivore page'",
@@ -71,7 +71,7 @@
 sequence.append(KeyComboAction("Right"))
 sequence.append(utils.AssertPresentationAction(
     "Navigate to fourth tab", 
-    ["BRAILLE LINE:  'TabList TabList TabList TabList Crust Page Veges Page Carnivore Page Delivery Page'",
+    ["BRAILLE LINE:  'Crust Page Veges Page Carnivore Page Delivery Page'",
      "     VISIBLE:  'Delivery Page', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Delivery page'"]))
@@ -83,7 +83,7 @@
 sequence.append(KeyComboAction("Left"))
 sequence.append(utils.AssertPresentationAction(
     "Navigate to back to third tab", 
-    ["BRAILLE LINE:  'TabList TabList TabList TabList Crust Page Veges Page Carnivore Page Delivery Page'",
+    ["BRAILLE LINE:  'Crust Page Veges Page Carnivore Page Delivery Page'",
      "     VISIBLE:  'Carnivore Page Delivery Page', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Carnivore page'"]))
Index: test/keystrokes/firefox/label_guess_bug_546815.py
===================================================================
--- test/keystrokes/firefox/label_guess_bug_546815.py	(revision 4409)
+++ test/keystrokes/firefox/label_guess_bug_546815.py	(working copy)
@@ -87,7 +87,7 @@
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "Next form field", 
-    ["BRAILLE LINE:  '2. Enter your City:  $l 3. Enter your State:  $l 4. Enter your Country: Image US $l text field using value'",
+    ["BRAILLE LINE:  '2. Enter your City:  $l 3. Enter your State:  $l 4. Enter your Country: US $l text field using value'",
      "     VISIBLE:  'US $l text field using value', cursor=1",
      "SPEECH OUTPUT: '4. Enter your Country: text US'"]))
 
@@ -97,8 +97,8 @@
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "Next form field", 
-    ["BRAILLE LINE:  '5. Enter your Zip:   $l'",
-     "     VISIBLE:  '5. Enter your Zip:   $l', cursor=21",
+    ["BRAILLE LINE:  '5. Enter your Zip:  $l'",
+     "     VISIBLE:  '5. Enter your Zip:  $l', cursor=20",
      "SPEECH OUTPUT: '5. Enter your Zip: text'"]))
 
 sequence.append(utils.StartRecordingAction())
Index: test/keystrokes/firefox/line_nav_slash_test.py
===================================================================
--- test/keystrokes/firefox/line_nav_slash_test.py	(revision 4409)
+++ test/keystrokes/firefox/line_nav_slash_test.py	(working copy)
@@ -154,8 +154,8 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "4. Line Up",
-    ["BRAILLE LINE:  'Nickname  $l Password  $l  Log in Button'",
-     "     VISIBLE:  'Nickname  $l Password  $l  Log i', cursor=1",
+    ["BRAILLE LINE:  'Nickname  $l Password  $l Log in Button'",
+     "     VISIBLE:  'Nickname  $l Password  $l Log in', cursor=1",
      "SPEECH OUTPUT: 'Nickname text Password password Log in button'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -186,8 +186,9 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "8. Line Up",
-    ["BRAILLE LINE:  'Services h4'",
-     "     VISIBLE:  'Services h4', cursor=1",
+    ["BUG? - We're picking up Science in the braille",
+     "BRAILLE LINE:  'Services h4 Science h4'",
+     "     VISIBLE:  'Services h4 Science h4', cursor=1",
      "SPEECH OUTPUT: 'Services heading level 4'"]))
 
 sequence.append(utils.StartRecordingAction())
Index: test/keystrokes/firefox/line_nav_enter_bug.py
===================================================================
--- test/keystrokes/firefox/line_nav_enter_bug.py	(revision 4409)
+++ test/keystrokes/firefox/line_nav_enter_bug.py	(working copy)
@@ -314,8 +314,8 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'Commit Button       Remember values as bookmarkable template Button'",
-     "     VISIBLE:  'Commit Button       Remember val', cursor=1",
+    ["BRAILLE LINE:  'Commit Button      Remember values as bookmarkable template Button'",
+     "     VISIBLE:  'Commit Button      Remember valu', cursor=1",
      "SPEECH OUTPUT: 'Commit button       Remember values as bookmarkable template button'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -491,7 +491,7 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Line Up",
-    ["BRAILLE LINE:  'New bug · Browse · Search · Reports · Account · Admin ·  Help Logged In joanmarie.diggs@gmail.com |  Log Out'",
+    ["BRAILLE LINE:  'New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie.diggs@gmail.com | Log Out'",
      "     VISIBLE:  'New bug · Browse · Search · Repo', cursor=1",
      "SPEECH OUTPUT: 'New bug link  · Browse link  · Search link  · Reports link  · Account link  · Admin link  · Help link Logged In joanmarie.diggs@gmail.com | Log Out link'"]))
 
Index: test/keystrokes/firefox/line_nav_simple_form.py
===================================================================
--- test/keystrokes/firefox/line_nav_simple_form.py	(revision 4409)
+++ test/keystrokes/firefox/line_nav_simple_form.py	(working copy)
@@ -198,17 +198,15 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "4. line Up",
-    ["BUG? - Why is the extra space present before Water?",
-     "BRAILLE LINE:  'Make a selection:  Water Combo'",
-     "     VISIBLE:  'Make a selection:  Water Combo', cursor=1",
+    ["BRAILLE LINE:  'Make a selection: Water Combo'",
+     "     VISIBLE:  'Make a selection: Water Combo', cursor=1",
      "SPEECH OUTPUT: 'Make a selection: Water combo box'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "5. line Up",
-    ["BUG? - Extra space after Blue",
-     "BRAILLE LINE:  'Check one or more: < > CheckBox Red < > CheckBox Blue  < > CheckBox Green'",
+    ["BRAILLE LINE:  'Check one or more: < > CheckBox Red < > CheckBox Blue < > CheckBox Green'",
      "     VISIBLE:  'Check one or more: < > CheckBox ', cursor=1",
      "SPEECH OUTPUT: 'Check one or more: Red check box not checked Blue check box not checked Green check box not checked'"]))
 
@@ -265,25 +263,24 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "12. line Up",
-    ["BRAILLE LINE:  'Tell me a secret:   $l'",
-     "     VISIBLE:  'Tell me a secret:   $l', cursor=1",
+    ["BRAILLE LINE:  'Tell me a secret:  $l'",
+     "     VISIBLE:  'Tell me a secret:  $l', cursor=1",
      "SPEECH OUTPUT: 'Tell me a secret: password'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "13. line Up",
-    ["BUG? - Extra space before the entry?",
-     "BRAILLE LINE:  'Magic disappearing text trick:  tab to me and I disappear $l'",
-     "     VISIBLE:  'Magic disappearing text trick:  ', cursor=1",
+    ["BRAILLE LINE:  'Magic disappearing text trick: tab to me and I disappear $l'",
+     "     VISIBLE:  'Magic disappearing text trick: t', cursor=1",
      "SPEECH OUTPUT: 'Magic disappearing text trick: text tab to me and I disappear'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "14. line Up",
-    ["BRAILLE LINE:  'Type something here:   $l'",
-     "     VISIBLE:  'Type something here:   $l', cursor=1",
+    ["BRAILLE LINE:  'Type something here:  $l'",
+     "     VISIBLE:  'Type something here:  $l', cursor=1",
      "SPEECH OUTPUT: 'Type something here: text'"]))
 
 ########################################################################
Index: src/orca/scripts/toolkits/Gecko/script.py
===================================================================
--- src/orca/scripts/toolkits/Gecko/script.py	(revision 4409)
+++ src/orca/scripts/toolkits/Gecko/script.py	(working copy)
@@ -5130,7 +5130,15 @@
                and extents != prevExtents \
                and lastExtents != prevExtents:
                 toAdd = self.getObjectsFromEOCs(prevObj, pOffset, boundary)
-                objects[0:0] = toAdd
+                # Depending on the line, there's a chance that we got our
+                # current object as part of toAdd. Check for dupes and just
+                # add up to the current object if we find them.
+                #
+                try:
+                    index = toAdd.index(objects[0])
+                except:
+                    index = len(toAdd)
+                objects[0:0] = toAdd[0:index]
             else:
                 break
 
@@ -5184,20 +5192,6 @@
 
             lastExtents = nextExtents
 
-        # Get rid of duplicates (real and functional).
-        #
-        parentLink = None
-        for o in objects:
-            if objects.count(o) > 1:
-                objects.pop(objects.index(o))
-            elif o[0].parent.getRole() == pyatspi.ROLE_LINK:
-                if not parentLink:
-                    parentLink = o[0].parent
-                elif self.isSameObject(o[0].parent, parentLink):
-                    objects.pop(objects.index(o))
-                else:
-                    parentLink = o[0].parent
-
         return objects
 
     def getObjectContentsAtOffset(self, obj, characterOffset):
