private static XAttribute GenerateMethodAccessModifier(MethodAccessModifierAnnotation annotation)
        {
            if (annotation == null)
            {
                return(null);
            }

            AccessModifier methodAccessModifier = annotation.MethodAccessModifier;

            if (methodAccessModifier == AccessModifier.Unspecified)
            {
                return(null);
            }

            return(new XAttribute(EdmConstants.CodegenNamespace + "MethodAccess", methodAccessModifier.ToString()));
        }
        private XElement GenerateFunctionImport(XNamespace xmlNamespace, FunctionImport functionImport)
        {
            MethodAccessModifierAnnotation annotation = functionImport.Annotations.OfType <MethodAccessModifierAnnotation>().SingleOrDefault();
            EntitySetPathAnnotation        entitySetPathAnnotation = functionImport.Annotations.OfType <EntitySetPathAnnotation>().SingleOrDefault();

            return(new XElement(
                       xmlNamespace + "FunctionImport",
                       new XAttribute("Name", functionImport.Name),
                       this.GenerateDocumentation(xmlNamespace, functionImport),
                       this.CsdlDataTypeGenerator.GenerateReturnTypeForFunctionImport(functionImport.ReturnTypes, xmlNamespace),
                       functionImport.IsComposable ? new XAttribute("IsComposable", true) : null,
                       functionImport.IsSideEffecting ? null : new XAttribute("IsSideEffecting", false),
                       functionImport.IsBindable ? new XAttribute("IsBindable", true) : null,
                       entitySetPathAnnotation != null ? new XAttribute("EntitySetPath", entitySetPathAnnotation.EntitySetPath) : null,
                       this.GenerateFunctionImportParameters(functionImport.Parameters, xmlNamespace),
                       this.GenerateAnnotations(xmlNamespace, functionImport),
                       GenerateMethodAccessModifier(annotation)));
        }