Added predicate function support with source, fixes #2
if an argument is an Error, full error message will include argument's name and message