anchor.diff:  	func lastIndex(offset: u32, cref ascii: std.Ascii): u32
   	{
   		var size = m_size;
  -		if offset > size then
  -			offset.pod = size;
  -
  -		var p = m_cstr + offset.pod;
  -		var needle = ascii.asU8.pod;
  -		while offset != 0u do
  -		{
  -			offset -= 1u;
  -			p = p - 1__u32;
  -			if needle == !!load.u8(p) then
  -				return offset;
  +		if size != 0__u32 then
  +		{
  +			if offset.pod >= size then
  +				offset = size - 1u;
  +
  +			var p = m_cstr + offset.pod;
  +			var needle = ascii.asU8.pod;
  +			do
  +			{
  +				if needle == !!load.u8(p) then
  +					return offset;
  +
  +				if offset == 0u then
  +					return new u32(size); // break
  +				offset -= 1u;
  +				p = p - 1__u32;
  +			}
  +			while true;
   		}
   		return new u32(size);
   	}
  
positive.code: 	** \brief Split the string
  	*/
  	view split(cref filter): ref
  		-> makeViewSplit(filter, func (cref ascii) -> ascii.blank);
  
  	/*!
  	** \brief Split the string
  
negative.code: 	view split(cref filter, cref separator: std.Ascii): ref
  	{
  		ref sep = separator;
  		return makeViewSplit(filter, 1u, func (cref ascii) -> ascii == sep);
  	}
  
  	/*!
  	** \brief Split the string
  	*/
  	view split(cref filter, cref pattern: string): ref
  		-> makeViewSplit(filter, pattern.size, pattern);
  
  	/*!
  	** \brief Split the string
  	*/
  	view split(cref filter, cref predicate): ref
  		-> makeViewSplit(filter, 1u, predicate);
  
  	/*!
  	** \brief Split the string
  