rem: if (!cc) cclen = 0; else if (cclen < 0) cclen = strlen(cc);  if (cclen == 0) { _memo = null_memo; _memo->_refcount++;  } else {  int capacity = (cclen + 16) & ~15; _memo = new Memo(cclen, capacity); memcpy(_memo->_real_data, cc, cclen); }  _data = _memo->_real_data; _length = cclen;
add: _data = s._data; _length = s._length; _memo = s._memo; _memo->_refcount++;
context: String::assign(const char *cc, int cclen){  if (!cc)    cclen = 0;  else if (cclen < 0)    cclen = strlen(cc);    if (cclen == 0) {    _memo = null_memo;    _memo->_refcount++;      } else {    // Make `capacity' a multiple of 16 characters at least as big as `cclen'.    int capacity = (cclen + 16) & ~15;    _memo = new Memo(cclen, capacity);    memcpy(_memo->_real_data, cc, cclen);  }    _data = _memo->_real_data;  _length = cclen;}