public string GetMonoSignature(string name = null)
        {
            if (name == null)
            {
                name = BaseName;
            }

            var mono = new StringBuilder(name);

            mono.Append('(');

            var end = FirstDefaultParameter == -1 ? Parameters.Length : FirstDefaultParameter;

            for (int n = 0; n < end; ++n)
            {
                if (n > 0)
                {
                    mono.Append(',');
                }
                mono.Append(NameGenerator.GetMonoName(Parameters[n].ParameterType));
            }

            mono.Append(')');

            return(mono.ToString());
        }
        public EquatableHelper(ProcessedMethod method, SourceWriter headers, SourceWriter implementation) :
            base(method, headers, implementation)
        {
            ReturnType = "bool";
            var pt       = method.Method.GetParameters() [0].ParameterType;
            var objc     = NameGenerator.GetTypeName(pt);
            var nullable = !pt.IsPrimitive ? " * _Nullable" : "";

            ParameterType = pt;
            ObjCSignature = $"isEqualTo{objc.PascalCase ()}:({objc}{nullable})other";
            MonoSignature = $"Equals({NameGenerator.GetMonoName (pt)})";
        }
        protected override string GetMonoSignature()
        {
            var mono = new StringBuilder(Constructor.Name);

            mono.Append('(');

            var end = FirstDefaultParameter == -1 ? Parameters.Length : FirstDefaultParameter;

            for (int n = 0; n < end; ++n)
            {
                if (n > 0)
                {
                    mono.Append(',');
                }
                mono.Append(NameGenerator.GetMonoName(Parameters[n].ParameterType));
            }

            mono.Append(')');

            return(mono.ToString());
        }