CTPath(path:TypePath)
CTFun(args:Array<CType>, ret:CType)
CTAnon(fields:Array<{t:CType, name:String, meta:Null<Metadata>}>)
CTExtend(t:Array<TypePath>, fields:Array<{t:CType, name:String, meta:Null<Metadata>}>)
CTParent(t:CType)
CTOpt(t:CType)
CTNamed(n:String, t:CType)
CTIntersection(types:Array<CType>)