public string TryResolveMemberSignatureString(SyntaxNode syntaxNode)
{
Func<SyntaxNode, string> func;
var dictionary = new Dictionary<SyntaxKind, Func<SyntaxNode, string>>
{
{ SyntaxKind.MethodDeclaration, x => GetMethodSignatureString((MethodDeclarationSyntax)x) },
{ SyntaxKind.ConstructorDeclaration, x => GetConstructorSignatureString((ConstructorDeclarationSyntax)x) },
{ SyntaxKind.DestructorDeclaration, x => GetDestructorSignatureString((DestructorDeclarationSyntax)x) },
{ SyntaxKind.GetAccessorDeclaration, x => GetPropertyGetterSignatureString((AccessorDeclarationSyntax)x) },
{ SyntaxKind.SetAccessorDeclaration, x => GetPropertySetterSignatureString((AccessorDeclarationSyntax)x) },
{ SyntaxKind.AddAccessorDeclaration, x => GetAddEventHandlerSignatureString((AccessorDeclarationSyntax)x) },
{ SyntaxKind.RemoveAccessorDeclaration, x => GetRemoveEventHandlerSignatureString((AccessorDeclarationSyntax)x) }
};
var kind = syntaxNode.Kind();
return dictionary.TryGetValue(kind, out func)
? func(syntaxNode)
: string.Empty;
}