internal static char[] MakeEvidenceArray (Evidence evidence, bool verbose) {
// We only support caching on our built-in evidence types (excluding hash b/c it would
// make our caching scheme just match up the same assembly from the same location which
// doesn't gain us anything).
IEnumerator enumerator = evidence.GetEnumerator();
int requiredLength = 0;
while (enumerator.MoveNext())
{
IBuiltInEvidence obj = enumerator.Current as IBuiltInEvidence;
if (obj == null)
return null;
requiredLength += obj.GetRequiredSize(verbose);
}
enumerator.Reset();
char[] buffer = new char[requiredLength];
int position = 0;
while (enumerator.MoveNext())
{
position = ((IBuiltInEvidence)enumerator.Current).OutputToBuffer(buffer, position, verbose);
}
return buffer;
}