private T GetAsn1ObjectRecursive <T>(DerSequence sequence, string id) where T : Asn1Object { if (sequence.OfType <DerObjectIdentifier>().Any(o => o.Id == id)) { return(sequence.OfType <T>().First()); } foreach (DerSequence subSequence in sequence.OfType <DerSequence>()) { T value = GetAsn1ObjectRecursive <T>(subSequence, id); if (value != default(T)) { return(value); } } return(default);