   private var debugInitCallExpr: ExprSyntaxProtocol {
     let mirror = Mirror(reflecting: self)
     if self.isCollection {
-      return FunctionCallExpr(calledExpression: IdentifierExpr(String("\(type(of: self))"))) {
+      return FunctionCallExpr(callee: "\(type(of: self))") {
         TupleExprElement(
           expression: ArrayExpr() {
             for child in mirror.children {

        tokenInitializerName = String(tokenKindStr[..<tokenKindStr.firstIndex(of: "(")!])
        requiresExplicitText = true
      }
      return FunctionCallExpr(calledExpression: MemberAccessExpr(name: tokenInitializerName)) {
        if requiresExplicitText {
          TupleExprElement(
            expression: StringLiteralExpr(content: token.text)

    let (label, value) = Mirror(reflecting: self).children.first!
    switch value {
    case let value as String:
      return FunctionCallExpr(callee: ".\(label!)") {
        TupleExprElement(expression: StringLiteralExpr(content: value))
      }
    case let value as Int:
      return FunctionCallExpr(callee: ".\(label!)") {
        TupleExprElement(expression: IntegerLiteralExpr(value))
      }
    default:
