public virtual ILiaraFormatter GetResponseFormatter(Type inputObjectType, ILiaraContext context)
        {
            ILiaraFormatter[] formatterArray;

            if (context.Route != null && context.Route.PathExtension != null)
            {
                if (context.Engine.Configuration.Formatters.UrlMap.TryGetValue(
                        context.Route.PathExtension.ToLower(),
                        out formatterArray))
                {
                    foreach (var liaraFormatter in formatterArray)
                    {
                        if (liaraFormatter.CanWrite(inputObjectType, context))
                        {
                            context.Response.Format.MediaType = liaraFormatter.GetDefaultMediaType();
                            return(liaraFormatter);
                        }
                    }
                }
            }

            foreach (var acceptedMediaType in context.Response.Format.AcceptedMediaTypes)
            {
                if (context.Engine.Configuration.Formatters.MediaMap.TryGetValue(
                        MediaType.FromDerivedMediaType(acceptedMediaType).ToString().ToLower(), out formatterArray))
                {
                    foreach (var liaraFormatter in formatterArray)
                    {
                        if (liaraFormatter.CanWrite(inputObjectType, context))
                        {
                            context.Response.Format.MediaType = acceptedMediaType;
                            return(liaraFormatter);
                        }
                    }
                }
            }

            return
                (context.Engine.Configuration.Formatters.FirstOrDefault(
                     formatter => formatter.CanWrite(inputObjectType, context)));
        }