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: domain.go
    path of file: ./repos/td/telegram/internal/deeplink
    
    the code of the file until where you have to start completion: package deeplink

import (
	"github.com/go-faster/errors"

	"github.com/gotd/td/ascii"
)

// ValidateDomain validate given domain (user) name
func ValidateDomain(domain string) error {
	return checkDomainSymbols(domain)
}

// checkDomainSymbols check that domain contains only a-z, A-Z, 0-9 and '_'
// symbols.
func checkDomainSymbols(domain string) error {
	switch {
	case domain == "":
		return errors.New("is empty")
	case len(domain) > 32:
		return errors.New("is too big")
	case !ascii.IsLatinLower(rune(domain[0])):
		r
    
func checkDomainSymbols(domain string) error {
	switch {
	case domain == "":
		return errors.New("is empty")
	case len(domain) > 32:
		return errors.New("is too big")
	case !ascii.IsLatinLower(rune(domain[0])):
		return errors.New("must start with lower letter")
	case domain[len(domain)-1] == '_':
		return errors.New("must not end with '_'")
	}

	for i, r := range domain {
		switch {
		case !ascii.IsLatinLetter(r) && !ascii.IsDigit(r) && r != '_':
		case i > 0 && domain[i] == '_' && domain[i] == domain[i-1]:
		default:
			continue
		}

		return errors.Errorf("unexpected %c at %d", r, i)
	}

	return nil
}