func printMatchConfig(config Config) {
	countedTypes := make([]string, 0)
	if config.MatchFilter == "all" || config.MatchFilter == "pointer" {
		countedTypes = append(countedTypes, "unsafe.Pointer")
	}
	if config.MatchFilter == "all" || config.MatchFilter == "sizeof" {
		countedTypes = append(countedTypes, "unsafe.Sizeof")
	}
	if config.MatchFilter == "all" || config.MatchFilter == "offsetof" {
		countedTypes = append(countedTypes, "unsafe.Offsetof")
	}
	if config.MatchFilter == "all" || config.MatchFilter == "alignof" {
		countedTypes = append(countedTypes, "unsafe.Alignof")
	}
	if config.MatchFilter == "all" || config.MatchFilter == "sliceheader" {
		countedTypes = append(countedTypes, "reflect.SliceHeader")
	}
	if config.MatchFilter == "all" || config.MatchFilter == "stringheader" {
		countedTypes = append(countedTypes, "reflect.StringHeader")
	}
	if config.MatchFilter == "all" || config.MatchFilter == "uintptr" {
		countedTypes = append(countedTypes, "uintptr")
	}
	_, _ = fmt.Fprintf(config.Output, "Couting occurances of %s\n\n", strings.Join(countedTypes, ","))
}
prints a readable version of the match config
package counter
import (
	"fmt"
	"github.com/fatih/color"
	"github.com/olekukonko/tablewriter"
	"golang.org/x/tools/go/packages"
	"io"
	"strings"
)
type Config struct {
	MaxDepth             int			 
	ShortenSeenPackages  bool			 
	PrintLinkToPkgGoDev  bool			 
	DetailedStats        bool			 
	HideStats            bool			 
	PrintUnsafeLines     bool			 
	ShowStandardPackages bool			 
	MatchFilter          string			 
	ContextFilter        string			 
	Output               io.Writer		 
}
func Run(config Config, paths... string) {
	mode := packages.NeedImports | packages.NeedDeps | packages.NeedSyntax |
			packages.NeedFiles | packages.NeedName
	if config.PrintUnsafeLines {
		mode |= packages.NeedTypes
	}
	pkgs, err := packages.Load(&packages.Config{
		Mode:       mode,
		Tests:      false,
	}, paths...)
	if err != nil {
		panic(err)
	}
	for _, pkg := range pkgs {
		initCache()
		table := tablewriter.NewWriter(config.Output)
		if config.DetailedStats && config.ContextFilter == "all" {
			table.SetHeader([]string{"With Dependencies", "Local Package", "Variable", "Parameter", "Assignment", "Call", "Other", "Package Path"})
			table.SetColumnAlignment([]int{tablewriter.ALIGN_CENTER, tablewriter.ALIGN_CENTER, tablewriter.ALIGN_CENTER,
				tablewriter.ALIGN_CENTER, tablewriter.ALIGN_CENTER, tablewriter.ALIGN_CENTER, tablewriter.ALIGN_CENTER,
				tablewriter.ALIGN_LEFT})
		} else if config.ContextFilter == "all" {
			table.SetHeader([]string{"With Dependencies", "Local Package", "Package Path"})
			table.SetColumnAlignment([]int{tablewriter.ALIGN_CENTER, tablewriter.ALIGN_CENTER, tablewriter.ALIGN_LEFT})
		} else {
			table.SetHeader([]string{"With Dependencies", fmt.Sprintf("Local Package %s", config.ContextFilter), "Package Path"})
			table.SetColumnAlignment([]int{tablewriter.ALIGN_CENTER, tablewriter.ALIGN_CENTER, tablewriter.ALIGN_LEFT})
		}
		table.SetBorder(false)
		table.SetColumnSeparator(" ")
		table.SetAutoWrapText(false)
		table.SetHeaderAlignment(tablewriter.ALIGN_LEFT)
		stats := printPkgTree(pkg, []IndentType{}, config, table, &map[*packages.Package]bool{})
		if config.PrintUnsafeLines && !config.HideStats {
			_, _ = fmt.Fprintln(config.Output)
		}
		if !config.HideStats {
			table.Render()
			printStats(pkg, stats, config)
		}
	}
	if !config.HideStats {
		printMatchConfig(config)
		printLegend(config)
	}
}