Json.NET serializa por profundidad y atributo

Por ejemplo tenemos dos clases

class FooA
{
    [SomeSpecialAttribute]
    public int SomeValueA { get; set; }

    public int SomeValueB { get; set; }

    public int SomeValueC { get; set; }
}

class FooB
{
    public FooA FooA { get; set; }
}

Uso Json.NET, la profundidad máxima es 1. Al serializar FooA, debería generar todas las propiedades como de costumbre, pero al serializar FooB, solo debería generar una propiedad de FooA que tenga un atributo especial. Entonces, solo al resolver propiedades de referencia anidadas (Profundidad> 0) deberíamos obtener un solo campo.

La salida debe ser: {"FooA": {"SomeValueA": "0"}}

¿Algunas ideas?