     (range for klass in @member when (range = @getRangeBy(klass, selection)))
 
   getRange: (selection) ->
-    ranges = @getRanges(selection)
-    _.last(sortRanges(ranges)) if ranges.length
-
-class InnerNonEmptySmartWordOrInnerParenthesis extends SomeTextObject
+    for member in @member when range = @getRangeBy(member, selection)
+      return range
+
+class InnerAnyPairOrInnerSmartWord extends TextObjectFirstFound
   @extend()
   member: [
-    "InnerNonEmptySmartWord"
-    "InnerParenthesis"
+    "InnerAnyPair"
+    "InnerSmartWord"
   ]

# -------------------------
class Word extends TextObject
  @extend(false)
  allowEmpty: true

  select: ->
    @vimState.modeManager.normalizeSelections()


class InnerSmartWord extends SmartWord
  @description: "Currently No diff from `a-smart-word`"
  @extend()

# -------------------------
