func (c *ConfigStore) StrippedPrefixMap(m map[string]string, prefix string) map[string]string {
	r := make(map[string]string)
	for k, v := range m {
		if strings.HasPrefix(k, prefix+".") {
			r[strings.TrimPrefix(k, prefix+".")] = v
		}
	}
	return r
}
StrippedPrefixMap filters out all the keys with given prefix and returns them
whereas the keys are striped from the prefix. The . is added implicitly.
package lxf  
import "strings"
type ConfigStore struct {
	reserved         []string
	reservedPrefixes []string
}
func NewConfigStore() *ConfigStore {
	return &ConfigStore{}
}
func (c *ConfigStore) WithReserved(keys ...string) *ConfigStore {
	return &ConfigStore{
		reserved:         append(append([]string{}, c.reserved...), keys...),
		reservedPrefixes: c.reservedPrefixes,
	}
}
func (c *ConfigStore) WithReservedPrefixes(keys ...string) *ConfigStore {
	return &ConfigStore{
		reserved:         c.reserved,
		reservedPrefixes: append(append([]string{}, c.reservedPrefixes...), keys...),
	}
}
func (c *ConfigStore) IsReserved(key string) bool {
	for _, res := range c.reserved {
		if key == res {
			return true
		}
	}
	for _, res := range c.reservedPrefixes {
		if key == res || strings.HasPrefix(key, res+".") {
			return true
		}
	}
	return false
}
func (c *ConfigStore) UnreservedMap(m map[string]string) map[string]string {
	r := make(map[string]string)
	for k, v := range m {
		if !c.IsReserved(k) {
			r[k] = v
		}
	}
	return r
}