>> Насчет этого "Ident(TermName(...)) => TypeTree(tpe)" - TypeTree дает после сплайсинга просто имя класса.
В текущее дерево TypeTree(tpe) вставить не получится, т.к. TypeTree(tpe) оборачивает тип класса C, а не объекта C. Надо или менять дерево на New(...) и тогда TypeTree(tpe) подойдет, или посмотреть как получить TypeTree, соответствующий companionSymbol.