private SeparatedSyntaxList <ArgumentSyntax> GetArgs(DpOptions options) { var frameworkMetadataArguments = new ArgumentSyntax[] { Argument(variable.Initializer?.Value ?? DefaultExpression(type)) }; if (options == DpOptions.RenderFrameworkCallback) { frameworkMetadataArguments = frameworkMetadataArguments.Concat(new[] { Argument(IdentifierName(Program.GetCallbackMethodName(variable))) }).ToArray(); } return(SeparatedList(new[] { options == DpOptions.RenderAttachedProperty ? Argument(LiteralExpression(SyntaxKind.StringLiteralExpression, Literal(variable.Identifier.Text))) : Argument(InvocationExpression(IdentifierName("nameof")).WithArgumentList(ArgumentList(SeparatedList(new[] { Argument(IdentifierName(variable.Identifier.Text)) })))), Argument(TypeOfExpression(type)), Argument(TypeOfExpression(ParseTypeName(@class.Identifier.Text))), Argument(ObjectCreationExpression(ParseTypeName("FrameworkPropertyMetadata")).WithArgumentList(ArgumentList(SeparatedList(frameworkMetadataArguments)))) })); }