def forward_until(self, condition):
        """Forward until one of the provided matches is found.

        The returned string contains all characters found *before the condition
        was met. In other words, the condition will be true for the remainder
        of the buffer.

        :param condition: set of valid strings
        """
        c = TokenWithPosition('', self.peek().position)
        while self.hasNext() and not condition(self.peek()):
            c += self.forward(1)
        return c