public IOutputWriter Process(object input)
        {
            var template = _templateFactory.GetTemplate(input);

            if (template == null)
            {
                throw new InvalidOperationException($"Unable to resolve template for object {input.ToString()}");
            }

            var outputWriter = _outputResolver.GetWriter(template, input);

            Process(template, input, outputWriter);

            return(outputWriter);
        }