in lib/lib.go [241:264]
func (obj *Scanner) Init() error {
	obj.wg = &sync.WaitGroup{}
	obj.mu = &sync.Mutex{}
	obj.results = make(interfaces.ResultSet)
	obj.skipdirs = make(map[interfaces.Backend]map[string]struct{})
	for _, backend := range obj.Backends {
		_, ok1 := backend.(interfaces.DataBackend)
		_, ok2 := backend.(interfaces.PathBackend)
		_, ok3 := backend.(interfaces.RootBackend)
		_, ok4 := backend.(interfaces.SeekBackend)
		if !ok1 && !ok2 && !ok3 && !ok4 {
			return fmt.Errorf("invalid backend: %s", backend.String())
		}
		if !ok1 && !ok2 { // TODO: remove this when we implement them!
			return fmt.Errorf("the RootBackend and SeekBackend is not yet supported")
		}
		obj.skipdirs[backend] = make(map[string]struct{})
	}
	return nil
}