func NewSynthesizer(entitySynthesisDefinitions []Definition) Synthesizer {
	s := Synthesizer{}
	for _, definition := range entitySynthesisDefinitions {
		definition.tagRules = definition.Tags.getTagRules()
		s.addConditions(definition.EntityRule)
		for _, rule := range definition.Rules {
			rule.EntityType = definition.EntityType
			rule.tagRules = append(rule.Tags.getTagRules(), definition.EntityRule.tagRules...)
			s.addConditions(rule)
		}
	}
	return s
}
NewSynthesizer initialize and return a Synthesizer from a set of EntityRules
package synthesis
import (
	"strings"
	sdk_metadata "github.com/newrelic/infra-integrations-sdk/v4/data/metadata"
	"github.com/newrelic/nri-prometheus/internal/pkg/labels"
)
type Synthesizer struct {
	conditionList []conditionGroup  
}
type conditionGroup struct {
	condition Condition
	rule      EntityRule
}