ifs.StartsWithOrdinal("``")&&s.EndsWithOrdinal("``")&&s.Length>4then[s.Substring(2,s.Length-4)]// identifier is enclosed in `` .. ``, so it is only a single element (this is very approximate)
elses.Split[|'.';'`'|]|>Array.toList// '.' chops members / namespaces / modules; '`' chops generic parameters for .NET types
|SynExpr.DotGet(e,dm,SynLongIdent(lid,dots,trivia),_)->SynExpr.DotGet(e,dm,SynLongIdent(lid,dots@[dotm],trivia),m)// REVIEW: MEMORY PERFORMANCE: This is memory intensive (we create a lot of these list nodes)