Bug 706885 - Rework Rooting APIs to preserve all available type information; r=billm