You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: raw.go
    path of file: ./repos/go-app/pkg/app
    
    the code of the file until where you have to start completion: package app

import (
	"context"
	"io"
	"strings"

	"github.com/maxence-charriere/go-app/v9/pkg/errors"
)

// Raw returns a ui element from the given raw value. HTML raw value must have a
// single root.
//
// It is not recommended to use this kind of node since there is no check on the
// raw string content.
func Raw(v string) UI {
	v = strings.TrimSpace(v)

	tag := rawRootTagName(v)
	if tag == "" {
		v = "<div></div>"
	}

	return &raw{
		value: v,
		tag:   tag,
	}
}

type raw struct {
	disp       Dispatcher
	jsvalue    Value
	parentElem UI
	tag        string
	value      string
}

func (r *raw) Kind() Kind {
	return RawHTML
}

func (r *raw) JSValue() Value {
	return r.jsvalue
}

func (r *raw) Mounted() bool {
	return r.jsva
    
func (r *raw) mount(d Dispatcher) error {
	if r.Mounted() {
		return errors.New("mounting raw html element failed").
			WithTag("reason", "already mounted").
			WithTag("name", r.name()).
			WithTag("kind", r.Kind())
	}

	r.disp = d

	wrapper, err := Window().createElement("div", "")
	if err != nil {
		return errors.New("creating raw node wrapper failed").Wrap(err)
	}

	if IsServer {
		r.jsvalue = wrapper
		return nil
	}

	wrapper.setInnerHTML(r.value)
	value := wrapper.firstChild()
	if !value.Truthy() {
		return errors.New("mounting raw html element failed").
			WithTag("reason", "converting raw html to html elements returned nil").
			WithTag("name", r.name()).
			WithTag("kind", r.Kind()).
			WithTag("raw-html", r.value)
	}
	wrapper.removeChild(value)
	r.jsvalue = value
	return nil
}