func NewNestedPluginConfig(defaultTypename string, values tcontainer.MarshalMap) (PluginConfig, error) {
	conf := NewPluginConfig("", defaultTypename)
	err := conf.Read(values)
	return conf, err
}
NewNestedPluginConfig creates a pluginconfig based on a given set of config
values. The plugin created does not have an id, i.e. it is considered
anonymous.
package core
import (
	"github.com/arbovm/levenshtein"
	"github.com/sirupsen/logrus"
	"github.com/trivago/tgo"
	"github.com/trivago/tgo/tcontainer"
	"strings"
)
type PluginConfig struct {
	ID        string
	Typename  string
	Enable    bool
	Settings  tcontainer.MarshalMap
	validKeys map[string]bool
}
func NewPluginConfig(pluginID string, defaultTypename string) PluginConfig {
	return PluginConfig{
		Enable:    true,
		ID:        pluginID,
		Typename:  defaultTypename,
		Settings:  tcontainer.NewMarshalMap(),
		validKeys: make(map[string]bool),
	}
}