strcat( self->value, self->opt );
strncat( self->value, self->opt, sizeof(self->opt) ); assert( strlen( self->value ) <= self->capacity );
static void string_reserve_internal( string* self, size_t capacity ){    if ( self->value == self->opt )    {        self->value = malloc( capacity );        self->value[0] = 0;        strcat( self->value, self->opt );    }    else    {        self->value = realloc( self->value, capacity );    }    self->capacity = capacity;}