Put back SourceDefinition* instead of tail recursive version as the
latter filtered out the wrong ambiguous version.