public override void VisitPropertyTemplate(ResolvedPropertyTemplate propertyTemplate) { var parentName = controlName; var methodName = DefaultViewCompilerCodeEmitter.BuildTemplateFunctionName + $"_{propertyTemplate.Property.DeclaringType.Name}_{propertyTemplate.Property.Name}_{currentTemplateIndex++}"; emitter.PushNewMethod(methodName, typeof(void), emitter.EmitControlBuilderParameters().Concat(new [] { emitter.EmitParameter("templateContainer", typeof(DotvvmControl)) }).ToArray()); // build the statements controlName = "templateContainer"; base.VisitPropertyTemplate(propertyTemplate); emitter.PopMethod(); controlName = parentName; var templateName = CreateTemplate(methodName); SetProperty(controlName, propertyTemplate.Property, SyntaxFactory.IdentifierName(templateName)); }