public override bool VisitParameterDecl(Parameter parameter)
        {
            var scope = DeclarationStack.Peek( );

            // mapped settings override any implicit handling
            if (TryGetTransformInfo(scope.Name, parameter.Name, out YamlBindingTransform xform))
            {
                ApplyParameterMarshaling(parameter, xform);
            }
            else
            {
                ApplyImplicitParamsUsage(parameter);
            }

            return(true);
        }
        private bool VisitReturnType(FunctionType signature)
        {
            var scope = DeclarationStack.Peek( );

            if (TryGetTransformInfo(scope.Name, out YamlBindingTransform xform))
            {
                signature.ReturnType = xform.TransformType(signature.ReturnType);
                scope.Attributes.AddRange(xform.Attributes);
                if (scope is Function f)
                {
                    // sadly the CppSharp AST treats Function.ReturnType distinct from Function.FunctionType.ReturnType.
                    f.ReturnType = signature.ReturnType;
                }
            }

            return(true);
        }