I figured it out. The signiture of the predicate i was compiling was wrong. I was doing;


public function DynamicPredicate(of t as TheType)(item as TheType) as boolean

Whereas what I wanted was;

public function DynamicPredicate(item as TheType) as boolean


And now it works.