public static T Clone <T>(T node) where T : INode { var cloner = new AstCloner(); var clone = cloner.Visit(node); cloner.UpdateReferences(clone); return((T)clone); }