func (nt *NameTranslator) Init(adsPath string, initType uint32) error {
	nt.m.Lock()
	defer nt.m.Unlock()
	if nt.closed() {
		return ErrClosed
	}
	return nt.iface.Init(adsPath, initType)
}
Init initializes the translator to use either Domain, Server, or GC for translation.
See ADS_NAME_INITTYPE_ENUM for possible values. adsPath is required for
Domain and Server types, corresponding to the domain name or the server name respectively.
Init must be called first.
package adsi
import (
	"sync"
	"github.com/go-adsi/adsi/api"
	"github.com/scjalliance/comshim"
)
type NameTranslator struct {
	m     sync.RWMutex
	iface *api.IADsNameTranslate
}
func (nt *NameTranslator) closed() bool {
	return (nt.iface == nil)
}
func NewNameTranslator(server string) (*NameTranslator, error) {
	comshim.Add(1)
	tr, err := api.NewIADsNameTranslate(server)
	if err != nil {
		return &NameTranslator{}, err
	}
	return &NameTranslator{iface: tr}, nil
}
func (nt *NameTranslator) Close() {
	nt.m.Lock()
	defer nt.m.Unlock()
	if nt.closed() {
		return
	}
	nt.iface.Release()
	comshim.Done()
}