static IEnumerable<TypeName> GetTypeNames(Type[] types) {
     foreach (Type t in types) {
         if (ReflectionUtils.IsNested(t)) continue;
         TypeName typeName = new TypeName(t);
         yield return typeName;
     }
 }
        static IEnumerable<TypeName> GetTypeNames(string [] namespaces, string [][] types, TypeName [] orcasTypes) {
            Debug.Assert(namespaces.Length == types.Length);

            for (int i = 0; i < namespaces.Length; i++) {
                for (int j = 0; j < types[i].Length; j++) {
                    TypeName typeName = new TypeName(namespaces[i], types[i][j]);
                    yield return typeName;
                }
            }

            if (IsOrcas) {
                foreach(TypeName orcasType in orcasTypes) {
                    yield return orcasType;
                }
            }
        }