public static void print_render_info(RenderInformationBase info)
    {
        if (info.isSetId())
        {
            Console.WriteLine("  Id: " + info.getId());
        }
        if (info.isSetName())
        {
            Console.WriteLine("  Name: " + info.getName());
        }
        if (info.isSetProgramName())
        {
            Console.WriteLine("  Program Name: " + info.getProgramName());
        }
        if (info.isSetProgramVersion())
        {
            Console.WriteLine("  Program Version: " + info.getProgramVersion());
        }
        if (info.isSetBackgroundColor())
        {
            Console.WriteLine("  Background color: " + info.getBackgroundColor());
        }

        Console.WriteLine("\nColor Definitions:");
        for (int j = 0; j < info.getNumColorDefinitions(); ++j)
        {
            ColorDefinition color = info.getColorDefinition(j);
            Console.WriteLine("\tcolor: " + j.ToString() +
                              " id: " + color.getId() +
                              " color: " + color.getValue());
        }

        Console.WriteLine("\nGradientDefinitions: ");
        for (int j = 0; j < info.getNumGradientDefinitions(); ++j)
        {
            GradientBase grad = info.getGradientDefinition(j);

            print_gradient_definition(grad);
        }

        // similarly for the remaining elements
        Console.WriteLine("\nNumber of Line Endings: {0}", info.getNumLineEndings());
    }