static void ResolveTypeDependencies(this IComponentDescriptor component, DesignDescriptor design)
        {
            foreach (var child in component.GetChildComponents())
            {
                ResolveTypeDependencies(child, design);
            }
            var processes = component.GetProcesses().ToArray();
            var str       = new StmtTypeResolver(design, component);

            foreach (var process in processes)
            {
                ResolveTypeDependencies(process, str);
            }
            foreach (var port in component.GetPorts())
            {
                str.RequireType(port.ElementType, design);
            }
            foreach (var signal in component.GetSignals())
            {
                str.RequireType(signal.ElementType, design);
            }
            foreach (var field in component.GetFields())
            {
                str.RequireType(field.Type, design);
            }
        }
 static void ResolveTypeDependencies(this IComponentDescriptor component, DesignDescriptor design)
 {
     foreach (var child in component.GetChildComponents())
     {
         ResolveTypeDependencies(child, design);
     }
     var processes = component.GetProcesses().ToArray();
     var str = new StmtTypeResolver(design, component);
     foreach (var process in processes)
     {
         ResolveTypeDependencies(process, str);
     }
     foreach (var port in component.GetPorts())
     {
         str.RequireType(port.ElementType, design);
     }
     foreach (var signal in component.GetSignals())
     {
         str.RequireType(signal.ElementType, design);
     }
     foreach (var field in component.GetFields())
     {
         str.RequireType(field.Type, design);
     }
 }
 static void ResolveTypeDependencies(this CodeDescriptor code, StmtTypeResolver str)
 {
     code.Implementation.Body.Accept(str);
 }
 static void ResolveTypeDependencies(this CodeDescriptor code, StmtTypeResolver str)
 {
     code.Implementation.Body.Accept(str);
 }