anchor.diff:  	}
   
   	//! Remove whitespace from the right side of the string
  -	func trim_right
  -		-> trim_right(func (cref ascii) -> ascii.blank);
  +	func trim_right {
  +		trim_right(func (cref ascii) -> ascii.blank);
  +	}
   
   	//! Remove whitespace from the left side of the string
  -	func trim_left
  -		-> trim_left(func (cref ascii) -> ascii.blank);
  +	func trim_left {
  +		return trim_left(func (cref ascii) -> ascii.blank);
  +	}
   
   	//! Remove all ascii matching the predicate from the left side of the string
   	func trim_left(cref predicate) {
  
positive.code: 	/*!
  	** \brief Get the ascii at offset 'i' ('\0' if 'i' is out of bound)
  	*/
  	operator [] (cref i: u32)
  		-> new std.Ascii(if i < m_size then !!load.u8(m_cstr + i.pod) else 0__u8);
  
  
  private:
  
negative.code: 	** \brief View on each UTF8 character
  	** \TODO UTF8 support (UTF8cpp?)
  	*/
  	view (ref filter): ref {
  		return std.details.string.make_view_ascii(self, filter);
  	}
  
  	//! View on each ascii
  	view ascii(ref filter): ref {
  		return std.details.string.make_view_ascii(self, filter);
  	}
  
  	//! View on each ascii as u8
  	view bytes(ref filter): ref {
  		return std.details.string.make_view_bytes(self, filter);
  	}
  
  	//! Split the string with blanks as separator
  	view split_by_blanks(ref filter): ref {
  		return std.details.string.make_view_split(self, filter, 1u, func (cref ascii) -> ascii.blank);
  	}
  
  	//! Split the string
  	view split_by(ref filter, cref separator: std.Ascii): ref {
  