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: interpreter_unix.go
    path of file: ./repos/portmaster/process/tags
    
    the code of the file until where you have to start completion: package tags

import (
	"bytes"
	"fmt"
	"io"
	"os"
	"path/filepath"
	"regexp"
    
func (h *InterpHandler) CreateProfile(p *process.Process) *profile.Profile {
	for _, it := range knownInterperters {
		if tag, ok := p.GetTag(it.ID); ok {
			// we can safely ignore the error
			args, err := shlex.Split(p.CmdLine)
			if err != nil {
				// this should not happen since we already called shlex.Split()
				// when adding the tag. Though, make the linter happy and bail out
				return nil
			}

			// if arg0 is the interpreter name itself strip it away
			// and use the next one
			if it.Regex.MatchString(args[0]) && len(args) > 1 {
				args = args[1:]
			}

			// Create a nice script name from filename.
			scriptName := filepath.Base(args[0])
			for _, ext := range it.Extensions {
				scriptName, _ = strings.CutSuffix(scriptName, ext)
			}
			scriptName = binmeta.GenerateBinaryNameFromPath(scriptName)

			return profile.New(&profile.Profile{
				Source:              profile.SourceLocal,
				Name:                fmt.Sprintf("%s: %s", it.Name, scriptName),
				PresentationPath:    tag.Value,
				UsePresentationPath: true,
				Fingerprints: []profile.Fingerprint{
					{
						Type:      profile.FingerprintTypeTagID,
						Key:       it.ID,
						Operation: profile.FingerprintOperationEqualsID,
						Value:     tag.Value,
					},
				},
			})
		}
	}
	return nil
}