roString vs String - which is when?

Reading doco:

3.2 Types” wrote:
… Internally there are two intrinsic string states. The first is for constant strings. For example, s=“astring”, will create an intrinsic constant string. But once a string is used in an expression, it becomes an “roString”. For example: s=s+“more”, results in s becoming an “roString”.
That does not seem to be the case though:

BrightScript Debugger> s="astring"
BrightScript Debugger> ? type(s)
String
BrightScript Debugger> s=s+"more"
BrightScript Debugger> ? type(s)
String

The result was String again. Yet roString exists:

BrightScript Debugger> ss = createobject("roString") 
BrightScript Debugger> ? type(ss)
roString
BrightScript Debugger> ss.setString(s)
BrightScript Debugger> ? ss
astringmore
BrightScript Debugger> ? type(ss)
roString

Is documentation wrong? What’s the relation between the two?