   # The ElementFinder result is extended with a find function
   # for chaining, so the above example is equivalent to:
   #
-  #     page.find('.qi-billboard').find('h3').find('..')
+  #     page.element(By.css('.qi-billboard'))
+  #       .then (bb) ->
+  #         bb.element(By.tagName('h3'))
+  #       .then (h3) ->
+  #         h3.element(By.xpath('..'))
   #
   # @param selectors the search conditions
   # @returns a promise which resolves to the target
   #   Findable, or null if no such WebElement exists
   find: (selectors...) ->
-    @find_(selectors...).then (elt) ->
+    @_find(selectors...).then (elt) ->
       if elt? then addFindableMixin(elt) else elt
-
+  
   # @param selectors the search conditions
   # @returns a promise which resolves to the target
   #   ElementFinder, or null if no such elt exists
-  find_: (selectors...) ->
-    # @param current the ElementFinder to search from, or this
+  _find: (selectors...) ->
+    # @param current the Findable to search from, or this
     #   Page to search from the document root
     # @param locator the protractor By object
     # @returns the result of calling *elt* on the current

  # @param selector the Protractor CSS locator argument
  # @returns a promise resolving to the Table array
  findTables: (selectors...) ->
    @findAll_(selectors...).then (tables) ->
      # Add the Table prototype to each WebElement in the result.
      tables.map(addTableMixin)

#
# Note - it would be preferable to define the following Table

      current.element(locator)

    # Convert the selectors to locators.
    locators = (@_locatorFor(selector) for selector in selectors)
    # Chain the selects and return a promise which adds the
    # Findable methods to the result, if it exists.
    target = locators.reduce(next, this)
    target.isPresent().then (exists) ->
      if exists then target else null
  
  # Finds the elts with the given search selection.
  # The selectors are described in the find function.
  # Unlike the find function, findAll only accepts one
  # selector argument.
  #
  # Each Findable in the array result is extended
  # with a find function for chaining.
  #
  # @param selectors the search condition
  # @returns a promise which resolves to the target
  #   Findable array
  findAll: (selectors...) ->
    @_findAll(selectors...).then (target) ->
      target.map(addFindableMixin)
    
  # @param selectors the search condition
  # @returns a promise which resolves to the target
  #   WebElement array
  _findAll: (selectors...) ->
    # @param parent the Findable to search from, or
    #   this Page to search from the document root
    # @param locator the protractor By object
    # @returns the search result WebElement array
