¿Cómo se puede usar QueryOver para filtrar una clase específica?

Actualmente estoy construyendo consultas dinámicamente de esta manera:

QueryOver<Base, Base> q = QueryOver.Of<Base>();

if (foo != null) q = q.Where(b => b.Foo == foo);
// ...

Ahora hay varias subclases asignadas deBase (p.ej.Derived) que quiero filtrar, básicamente algo como:

if (bar) q = q.Where(b => b is Derived); // does not work

o:

if (bar) q = q.Where(b => b.DiscriminatorColumn == 'derived'); // dito

¿Cómo puedo lograr eso, preferiblemente, pero no necesariamente, de forma segura? ¿Se puede hacer esto usando LINQ también?

Respuestas a la pregunta(2)

Su respuesta a la pregunta