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: initenv.go
    path of file: ./repos/k6/js/common
    
    the code of the file until where you have to start completion: package common

import (
	"net/url"
	"path/filepath"

	"go.k6.io/k6/lib"
	"go.k6.io/k6/lib/fsext"
)

// InitEnvironment contains properties that can be accessed by Go code executed
// in the k6 init context. It can be accessed by calling common.GetInitEnv().
type InitEnvironment struct {
	*lib.TestPreInitState
	FileSystems map[string]fsext.Fs
	CWD         *url.URL
	// TODO: get rid of this type altogether? we won't need it if we figure out
	// how to handle .tar archive vs regular JS script differences in FileSystems
}

// GetAbsFilePath should be used to access the FileSystems, sinc
    
func (ie *InitEnvironment) GetAbsFilePath(filename string) string {
	// Here IsAbs should be enough but unfortunately it doesn't handle absolute paths starting from
	// the current drive on windows like `\users\noname\...`. Also it makes it more easy to test and
	// will probably be need for archive execution under windows if always consider '/...' as an
	// absolute path.
	if filename[0] != '/' && filename[0] != '\\' && !filepath.IsAbs(filename) {
		filename = filepath.Join(ie.CWD.Path, filename)
	}
	filename = filepath.Clean(filename)
	if filename[0:1] != fsext.FilePathSeparator {
		filename = fsext.FilePathSeparator + filename
	}
	return filename
}