    # File lib/facets/core/matchdata/matchtree.rb, line 21
      def matchtree(index=0)
        ret=[]
        b, e=self.begin(index), self.end(index)
        while (index+=1)<=length
          if index==length || (bi=self.begin(index))>=e
            # we are finished, if something is left, then add it
            ret << string[b, e-b] if e>b
            break
          else
            if bi>=b
              ret << string[b, bi-b] if bi>b
              ret << matchtree(index)
              b=self.end(index)
            end
          end
        end
        return ret
      end