public override void Generate(StringBuilder builder, string fullClassName, SimpleTermDefinition definition, CultureInfo culture)
 {
     if (definition.AllParameters.Any())
     {
         JsGenerationHelper.GenerateTermDeclaration_Method(builder, definition, culture);
     }
     else
     {
         JsGenerationHelper.GenerateTermDeclaration_Property(builder, definition, definition.Key, culture);
     }
 }
        public override void Generate(StringBuilder builder, string fullClassName, ComplexTermDefinition definition, CultureInfo culture)
        {
            builder.AppendLine($@"{definition.Key} ({string.Join(", ", definition.AllParameters.Select(p => p.Name))}) {{
	switch ({definition.ComplexParameter.Name}) {{"    );

            foreach (var complexity in definition.Complexities)
            {
                var termValue = JsGenerationHelper.GetTerm(complexity.Value, culture).OriginalValue;
                // TODO: be cleverer, doesnt account for escaping
                termValue = termValue.Replace("{", "${");

                var key = complexity.Key.Substring(complexity.Key.LastIndexOf('.') + 1);
                builder.AppendLine($@"		case '{key.Replace("'", "\\'")}': return `{termValue.Replace("`", "\\`")}`;");
            }

            builder.AppendLine($@"
	}}

}}");
        }