private SyntaxNode WrapForwardedIdentifier(IdentifierNameSyntax identifier, ParameterListSyntax parameterListSyntax) { var parameter = parameterListSyntax.Parameters.FirstOrDefault(p => p.Identifier.ToFullString() == identifier.ToFullString()); var specialType = _typeTranslation.FirstOrDefault(tt => PrettyTypeName(tt.ActualType) == parameter.Type.ToFullString().Replace("global::", "")); if (specialType != null) { var wrappedExpression = SyntaxFactory.ParseExpression(specialType.ReverseTranslationExpression); var targetIdentifierNodes = wrappedExpression.DescendantNodes().OfType<IdentifierNameSyntax>().Where(i => i.ToFullString() == "target"); wrappedExpression = wrappedExpression.ReplaceNodes(targetIdentifierNodes, (originalNode, rewrittenNode) => identifier); return wrappedExpression; } return identifier; }