private EvidenceBase GetHostEvidenceNoLock(Type type)
{
EvidenceTypeDescriptor evidenceTypeDescriptor = this.GetEvidenceTypeDescriptor(type);
if (evidenceTypeDescriptor != null)
{
if (evidenceTypeDescriptor.HostEvidence != null)
{
return(evidenceTypeDescriptor.HostEvidence);
}
if ((this.m_target != null) && !evidenceTypeDescriptor.Generated)
{
using (new EvidenceUpgradeLockHolder(this))
{
evidenceTypeDescriptor.Generated = true;
EvidenceBase base2 = this.GenerateHostEvidence(type, evidenceTypeDescriptor.HostCanGenerate);
if (base2 != null)
{
evidenceTypeDescriptor.HostEvidence = base2;
Evidence target = (this.m_cloneOrigin != null) ? (this.m_cloneOrigin.Target as Evidence) : null;
if (target == null)
{
return(base2);
}
using (new EvidenceLockHolder(target, EvidenceLockHolder.LockType.Writer))
{
EvidenceTypeDescriptor descriptor2 = target.GetEvidenceTypeDescriptor(type);
if ((descriptor2 != null) && (descriptor2.HostEvidence == null))
{
descriptor2.HostEvidence = base2.Clone();
}
}
}
return(base2);
}
}
}
return(null);
}