private static bool TryGetNewParameterSyntax(ParameterSyntax parameter, IParameterSymbol overriddenParameter, out ParameterSyntax newParameterSyntax)
        {
            if (!overriddenParameter.HasExplicitDefaultValue)
            {
                newParameterSyntax = parameter.WithDefault(null).WithAdditionalAnnotations(Formatter.Annotation);
                return true;
            }

            var defaultSyntax = (overriddenParameter.DeclaringSyntaxReferences.FirstOrDefault()?.GetSyntax() as ParameterSyntax)?.Default;
            if (defaultSyntax != null)
            {
                newParameterSyntax = parameter.WithDefault(defaultSyntax.WithoutTrivia().WithAdditionalAnnotations(Formatter.Annotation));
                return true;
            }

            newParameterSyntax = null;
            return false;
        }
        private static ParameterSyntax TransformParameterDefaultValue(ParameterSyntax parameter)
        {
            // Just neutralize the default parameter since null can't be assigned to IntPtr,
            // and to avoid method overload ambiguities when parameters are omitted.
            return parameter.WithDefault(null);

            // We could translate the null to default(IntPtr) like this:
            ////return parameter.Default?.Value.Kind() == SyntaxKind.NullLiteralExpression
            ////    ? parameter.WithDefault(SyntaxFactory.EqualsValueClause(SyntaxFactory.DefaultExpression(IntPtrTypeSyntax)))
            ////    : parameter;
        }