//Handle the request as it comes. Pass the request object and the name of the handler that will first process the request
        private bool TryHandle(IRequestHandler requestHandler, ILoanRequest request)
        {
            //Find if the curent request handler has got any Successor. If it has than assign the successor
            var firstOrDefault =
                Handlers.FirstOrDefault(handle => handle.Metadata.SuccessorOf == requestHandler.GetType());

            //Handle the request first. If it gets handled, nothing to do
            if (requestHandler.HandleRequestMEF(request))
            {
                return true;
            }
                //Reques did not get handled, try passing it on to the Successor
            else if (firstOrDefault != null)
            {
                requestHandler.Successor = firstOrDefault.Value;
                //Call the method again to process the request and set the successor, if there is any
                return TryHandle(requestHandler.Successor, request);
            }
            else
            {
                return false;
            }
        }