public bool IsSubtypeOrEqual(NodeId target, NodeId parent) { if (target.Equals(parent) || parent.EqualsNumeric(0, 0U)) { return(true); } if (!this.AddressSpaceTable.TryGetValue(parent, out Node node)) { return(false); } for (int index = 0; index < node.References.Count; ++index) { ReferenceNode reference = node.References[index]; if (!reference.IsInverse && reference.ReferenceType.EqualsNumeric(0, 45U) && this.IsSubtypeOrEqual(target, reference.Target)) { return(true); } } return(false); }