class UTF8StringValue extends StringValue {

    @Override
    public TextValue plus( TextValue other )
    {
        if ( other instanceof UTF8StringValue )
        {
            UTF8StringValue rhs = (UTF8StringValue) other;
            byte[] newBytes = new byte[byteLength + rhs.byteLength];
            System.arraycopy( bytes, offset, newBytes, 0, byteLength );
            System.arraycopy( rhs.bytes, rhs.offset, newBytes, byteLength, rhs.byteLength );
            return utf8Value( newBytes );
        }

        return Values.stringValue( stringValue() + other.stringValue() );
    }

      UTF8StringValue( byte[] bytes, int offset, int length );

}