public bool Delete(long id)
        {
            ValidateHealthState();

            var resource = ResourceGraph.Get(id);

            if (resource == null)
            {
                return(false);
            }

            return(ResourceGraph.Destroy(resource));
        }
        public TResult Read <TResult>(long id, Func <Resource, TResult> accessor)
        {
            ValidateHealthState();

            var resource = ResourceGraph.Get(id);

            if (resource == null)
            {
                throw new KeyNotFoundException($"No resource with Id {id} found!");
            }

            var result = accessor(resource);

            return(result);
        }
        public void Modify(long id, Func <Resource, bool> modifier)
        {
            ValidateHealthState();

            var resource = ResourceGraph.Get(id);

            if (resource == null)
            {
                throw new KeyNotFoundException($"No resource with Id {id} found!");
            }

            var result = modifier(resource);

            if (result)
            {
                ResourceGraph.Save(resource);
            }
        }