public string SourceFor(PredicateIndicator p)
{
// ReSharper disable once NotResolvedInText
if (p.Functor == null) throw new ArgumentNullException("functor");
var s = new StringWriter();
var writer = new ISOPrologWriter(s);
var predicateInfo = CheckForPredicateInfo(p);
if (predicateInfo == null)
throw new ArgumentException(string.Format("Unknown predicate: {0}.", p));
SourceFromPredicateInfo(p, predicateInfo, writer);
return s.ToString();
}