private static ExpressionSyntax Compare(IFieldSymbol field)
        {
            if (field.Type.SpecialType == SpecialType.System_Boolean ||
                field.Type.SpecialType == SpecialType.System_Char ||
                field.Type.SpecialType == SpecialType.System_SByte ||
                field.Type.SpecialType == SpecialType.System_Byte ||
                field.Type.SpecialType == SpecialType.System_Int16 ||
                field.Type.SpecialType == SpecialType.System_UInt16 ||
                field.Type.SpecialType == SpecialType.System_Int32 ||
                field.Type.SpecialType == SpecialType.System_UInt32 ||
                field.Type.SpecialType == SpecialType.System_Int64 ||
                field.Type.SpecialType == SpecialType.System_UInt64 ||
                field.Type.SpecialType == SpecialType.System_Single ||
                field.Type.SpecialType == SpecialType.System_Double)
            {
                return(BinaryExpression(SyntaxKind.EqualsExpression, field.AsIdentifierName(), "value".AsIdentifierName()));
            }

            return(InvocationExpression(
                       MemberAccessExpression(
                           SyntaxKind.SimpleMemberAccessExpression,
                           PredefinedType(
                               Token(SyntaxKind.ObjectKeyword)),
                           IdentifierName("Equals")))
                   .WithArgumentList(RoslynHelpers.CreateArguments(field.AsIdentifierName(), "value".AsIdentifierName())));
        }