base.Str

read .hash(hasher: mut base.Hasher): mut base.Hasher, // from base.ToHash/0
read .str: imm base.Str, // from base.Stringable/0
imm .float: mut base.Action[imm base.Float],
imm .join(flow: mut base.flows.Flow[imm base.Str]): imm base.Str, // from base.flows.Joinable/1
imm ==(other: imm base.Str): imm base.Bool,
imm .substring(start: imm base.Nat, end: imm base.Nat): imm base.Str,
imm !=(other: imm base.Str): imm base.Bool,
imm .utf8: imm base.List[imm base.Byte],
imm .charAt(index: imm base.Nat): imm base.Str,
imm .flow: mut base.flows.Flow[imm base.Str],
imm .assertEq(message: imm base.Str, other: imm base.Str): imm base.Void,
imm .assertEq(other: imm base.Str): imm base.Void,
read .isEmpty: imm base.Bool,
mut .clear: imm base.Void,
mut .append(other: read base.Stringable): imm base.Void,
imm .normalise: imm base.Str,
imm .startsWith(other: imm base.Str): imm base.Bool,
mut +(other: read base.Stringable): mut base.Str,
imm +(other: read base.Stringable): imm base.Str,
imm .size: imm base.Nat,
read .hash(hasher: mut base.Hasher): mut base.Hasher, // from base.ToHash/0
read .str: imm base.Str, // from base.Stringable/0
imm .float: mut base.Action[imm base.Float],
imm .join(flow: mut base.flows.Flow[imm base.Str]): imm base.Str, // from base.flows.Joinable/1
imm ==(other: imm base.Str): imm base.Bool,
imm .substring(start: imm base.Nat, end: imm base.Nat): imm base.Str,
imm !=(other: imm base.Str): imm base.Bool,
imm .utf8: imm base.List[imm base.Byte],
imm .charAt(index: imm base.Nat): imm base.Str,
imm .flow: mut base.flows.Flow[imm base.Str],
imm .assertEq(message: imm base.Str, other: imm base.Str): imm base.Void,
imm .assertEq(other: imm base.Str): imm base.Void,
read .isEmpty: imm base.Bool,
mut .clear: imm base.Void,
mut .append(other: read base.Stringable): imm base.Void,
imm .normalise: imm base.Str,
imm .startsWith(other: imm base.Str): imm base.Bool,
mut +(other: read base.Stringable): mut base.Str,
imm +(other: read base.Stringable): imm base.Str,
imm .size: imm base.Nat,