/// <summary>
        /// Gets the set of operations selected for types the instance type can be assigned to that are bindable to the instance type.
        /// </summary>
        /// <param name="instanceTypeBeingSerialized">The instance type being serialized.</param>
        /// <returns>The selected bindable operations.</returns>
        private List<OperationWrapper> GetSelectedAndBindableOperationsForAssignableTypes(ResourceType instanceTypeBeingSerialized)
        {
            IEnumerable<OperationWrapper> selectedOperations = Enumerable.Empty<OperationWrapper>();

            // Gather up all the selected operations that were selected for types that this instance type is assignable from.
            foreach (var baseType in instanceTypeBeingSerialized.BaseTypesAndSelf())
            {
                List<OperationWrapper> selectedOperationsForUriType;
                if (this.selectedOperationsByUriType.TryGetValue(baseType, out selectedOperationsForUriType))
                {
                    selectedOperations = selectedOperations.Concat(selectedOperationsForUriType);
                }
            }

            // Only return the operations that are actually bindable to the instance type.
            // this filtering is needed because the key for something like Person will include actions bound to Employee and Manager as well,
            // so that something like ?$select=ActionName will match a varying set of actions based on which instance type is being serialized.
            selectedOperations = selectedOperations.Where(o => o.BindingParameter.ParameterType.IsAssignableFrom(instanceTypeBeingSerialized));

            // Ensure the set is distinct before caching it.
            selectedOperations = selectedOperations.Distinct();

            return selectedOperations.ToList();
        }