* generate typedefs for the types grouped by strongly connected components
*/
typedefs :: [[Type]] -> Either String [String]
+
+/**
+ * Generate a single typedef for a type.
+ * This does not terminate for recursive types
+ */
+flatTypedef :: Type -> Either String [String]