protected override CodeGenerationSymbol Clone()
        {
            var result = new CodeGenerationMethodSymbol(
                this.ContainingType,
                this.GetAttributes(),
                this.DeclaredAccessibility,
                this.Modifiers,
                this.ReturnType,
                this.RefKind,
                this.ExplicitInterfaceImplementations,
                this.Name,
                this.TypeParameters,
                this.Parameters,
                this.GetReturnTypeAttributes(),
                _documentationCommentXml,
                this.MethodKind,
                this.IsInitOnly
                );

            CodeGenerationMethodInfo.Attach(
                result,
                CodeGenerationMethodInfo.GetIsNew(this),
                CodeGenerationMethodInfo.GetIsUnsafe(this),
                CodeGenerationMethodInfo.GetIsPartial(this),
                CodeGenerationMethodInfo.GetIsAsyncMethod(this),
                CodeGenerationMethodInfo.GetStatements(this),
                CodeGenerationMethodInfo.GetHandlesExpressions(this)
                );

            return(result);
        }
        protected override CodeGenerationSymbol Clone()
        {
            var result = new CodeGenerationMethodSymbol(this.ContainingType,
                this.GetAttributes(), this.DeclaredAccessibility, this.Modifiers,
                this.ReturnType, this.ExplicitInterfaceImplementations.FirstOrDefault(),
                this.Name, this.TypeParameters, this.Parameters, this.GetReturnTypeAttributes());

            CodeGenerationMethodInfo.Attach(result,
                CodeGenerationMethodInfo.GetIsNew(this),
                CodeGenerationMethodInfo.GetIsUnsafe(this),
                CodeGenerationMethodInfo.GetIsPartial(this),
                CodeGenerationMethodInfo.GetIsAsync(this),
                CodeGenerationMethodInfo.GetStatements(this),
                CodeGenerationMethodInfo.GetHandlesExpressions(this));

            return result;
        }