public static void AddDependencyImports <T>(this TypeScriptFile file, TypeScriptTemplateBase <T> template)
        {
            var dependencies = template.GetTemplateDependencies().Select(template.ExecutionContext.FindTemplateInstance <ITemplate>).Distinct();

            foreach (var dependency in dependencies)
            {
                if (!(dependency is IClassProvider))
                {
                    continue;
                }

                if (string.IsNullOrWhiteSpace(((IClassProvider)dependency).ClassName))
                {
                    continue;
                }

                file.AddImportIfNotExists(
                    className: ((IClassProvider)dependency).ClassName,
                    location: GetRelativePath(template, dependency));
            }

            foreach (var import in template.Imports)
            {
                file.AddImportIfNotExists(
                    className: import.Type,
                    location: import.Location);
            }
            file.NormalizeImports();
        }
 public static string GetRelativePath <T>(this TypeScriptTemplateBase <T> template, ITemplate dependency)
 {
     return("./" + template.GetMetadata().GetFullLocationPath().GetRelativePath(dependency.GetMetadata().GetFilePathWithoutExtension()));
 }