static void Main(string[] args)
        {
            var list    = new List <Person>();
            var person1 = new Person("Paulina", 24, new DateTimeOffset(1993, 7, 10, 12, 33, 22, new TimeSpan()));
            var person2 = new Person("Josh", 33, new DateTimeOffset(1984, 7, 2, 1, 15, 5, new TimeSpan()));
            var person3 = new Person("Bob", 33, new DateTimeOffset(1988, 10, 11, 18, 47, 12, new TimeSpan()));

            person3.FavouritePerson = person2;
            person1.FavouritePerson = person1;
            person1.Addresses.Add(new Address("My house", "AB1 C23"));
            person1.Addresses.Add(new Address("My other house", "DE2 F34"));
            person2.Addresses.Add(new Address("Big Place", "XY4 Z56"));
            person2.Addresses.Add(new Address("Another Place", null));
            person3.Addresses = null;
            list.Add(person1);
            list.Add(person2);
            list.Add(person3);
            //var options = new CSharpSerializeToClassParameters("InMemoryDb");
            var options = new CSharpSerializerParameters("MyClass");

            options.AllowObjectInitializer = false;
            var serializer = new CSharpObjectSerializer(options);

            options.IgnoreConditions.Add(new IgnoreCondition((o, info) =>
            {
                if (info.Name == nameof(Person.IgnoreThis))
                {
                    return(true);
                }

                return(false);
            }));
            var code = serializer.Serialize(list);

            Console.WriteLine(code.Class);
            File.WriteAllText(@"d:\code\temp-formatted.cs", code.Class);
        }
        public void TestComments()
        {
            var list    = GetSimpleList();
            var options = new CSharpSerializerParameters();

            options.DescriptionFormatter.SetForType <List <Person> >(
                (list2, args) => { return("Hello"); });
            var serializer = new CSharpObjectSerializer(options);

            options.BeforeInstanceComment    = "Before instance comment";
            options.BeforeInitialiserComment = "Before initialiser comment";
            options.AfterInstanceComment     = "After instance comment";
            options.AfterInitialiserComment  = "After initialiser comment";
            var code = serializer.Serialize(list).Class;

            Assert.AreEqual(@"using Brandless.ObjectSerializer.Tests.Models;
using System;
using System.Collections.Generic;
public class SerializedObject
{
    public List<Person>GetData()
    {
        // Before instance comment
        var instance = /* Before initialiser comment */ new List<Person>
        {
            new Person
            {
                Name = ""Paulina"",
                Age = 24,
                Addresses = new List<Address>
                {
                    new Address
                    {
                        Street = ""My house"",
                        PostCode = ""AB1 C23""
                    },
                    new Address
                    {
                        Street = ""My other house"",
                        PostCode = ""DE2 F34""
                    }
                }
            },
            new Person
            {
                Name = ""Josh"",
                Age = 33,
                Addresses = new List<Address>
                {
                    new Address
                    {
                        Street = ""Big Place"",
                        PostCode = ""XY4 Z56""
                    }
                }
            },
            new Person
            {
                Name = ""Bob"",
                Age = 33
            }
        } /* After initialiser comment */ ;
        // After instance comment
        return instance;
    }
}", code);
        }