private static ValidationContext ExecuteDuplicateOperationValidator(IEdmModel model)
        {
            ValidationContext           context   = new ValidationContext(model, (object o) => false);
            DuplicateOperationValidator validator = new DuplicateOperationValidator(context);

            foreach (var operation in model.SchemaElements.OfType <IEdmOperation>())
            {
                validator.ValidateNotDuplicate(operation, false /*skipError*/);
            }
            return(context);
        }
        // Take operation name to avoid recomputing it
        internal static bool OperationOrNameExistsInReferencedModel(this IEdmModel model, IEdmOperation operation, string operationFullName)
        {
            foreach (IEdmModel referenced in model.ReferencedModels)
            {
                if (referenced.FindDeclaredType(operationFullName) != null ||
                    referenced.ExistsContainer(operationFullName) ||
                    referenced.FindDeclaredValueTerm(operationFullName) != null)
                {
                    return(true);
                }
                else
                {
                    IEnumerable <IEdmOperation> operationList = referenced.FindDeclaredOperations(operationFullName) ?? Enumerable.Empty <IEdmOperation>();
                    if (DuplicateOperationValidator.IsDuplicateOperation(operation, operationList))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }