 
 class LatestChange extends TextObject
   @extend(false)
+  @derivesInnerAndA()
   wise: null
   selectOnce: true
   getRange: ->
     @vimState.mark.getRange('[', ']')
-class ALatestChange extends LatestChange
-  @extend()
-class InnerLatestChange extends LatestChange # No diff from ALatestChange
-  @extend()
 
 class SearchMatchForward extends TextObject
   @extend()

        enclosingRange.containsRange(range)

    forwardingRanges[0] or enclosingRange
class AAnyPairAllowForwarding extends AnyPairAllowForwarding
  @extend()
class InnerAnyPairAllowForwarding extends AnyPairAllowForwarding
  @extend()

class AnyQuote extends AnyPair
  @extend(false)
  allowForwarding: true
  member: ['DoubleQuote', 'SingleQuote', 'BackTick']
  getRange: (selection) ->
    ranges = @getRanges(selection)
    # Pick range which end.colum is leftmost(mean, closed first)
    _.first(_.sortBy(ranges, (r) -> r.end.column)) if ranges.length
class AAnyQuote extends AnyQuote
  @extend()
class InnerAnyQuote extends AnyQuote
  @extend()

class Quote extends Pair
  @extend(false)

    if @vimState.hasPersistentSelections()
      @vimState.persistentSelection.setSelectedBufferRanges()
      return true

class VisibleArea extends TextObject
  @extend(false)
  @derivesInnerAndA()
  selectOnce: true

  getRange: (selection) ->
