-local nullfunc = function(n) return n end
-local to_node = (Dnode ~= node) and Dnode.tonode or nullfunc
-local to_direct = (Dnode ~= node) and Dnode.todirect or nullfunc
-
-local setfield = (Dnode ~= node) and Dnode.setfield or function(n, i, c) n[i] = c end
-local getid = (Dnode ~= node) and Dnode.getid or function(n) return n.id end
-local getfont = (Dnode ~= node) and Dnode.getfont or function(n) return n.font end
-local getchar = (Dnode ~= node) and Dnode.getchar or function(n) return n.char end
-local getfield = (Dnode ~= node) and Dnode.getfield or function(n, i) return n[i] end
-local getsubtype = (Dnode ~= node) and Dnode.getsubtype or function(n) return n.subtype end
+local setfield = node.direct.setfield
+local getid = node.direct.getid
+local getfont = node.direct.getfont
+local getchar = node.direct.getchar
+local getfield = node.direct.getfield
+local getsubtype = node.direct.getsubtype
+local getlang = node.direct.getlang or function (n) return getfield(n,'lang') end