private static ExpressionSyntax BuildPropertyHashCodeCall(GeneratedPropertyInfo propertyInfo)
        {
            MemberAccessExpressionSyntax defaultComparer          = DefaultEqualityComparer.AccessExpression(propertyInfo.Type);
            MemberAccessExpressionSyntax defaultGetHashCodeMethod = MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, defaultComparer, _getHashCodeIdentifier);
            MemberAccessExpressionSyntax fieldAccess     = MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, ThisExpression(), IdentifierName(propertyInfo.Name));
            InvocationExpressionSyntax   getHashCodeCall = InvocationExpression(defaultGetHashCodeMethod).AddArgumentListArguments(Argument(fieldAccess));

            return(getHashCodeCall);
        }
 private static ExpressionSyntax BuildEqualityComparerEqualsCall(GeneratedPropertyInfo property)
 => InvocationExpression
 (
     MemberAccessExpression
     (
         SyntaxKind.SimpleMemberAccessExpression,
         DefaultEqualityComparer.AccessExpression(property.Type),
         IdentifierName(nameof(EqualityComparer <object> .Default.Equals))
     )
 )
 .AddArgumentListArguments
 (
     Argument(MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, ThisExpression(), IdentifierName(property.Name))),
     Argument(MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, IdentifierName(_otherArg), IdentifierName(property.Name)))
 );