public VerifiableObjectContext(object targetObject, VerifiableObjectContract contract, string instanceName)
        {
            _targetObject = targetObject;
            _contract     = contract ?? throw new ArgumentNullException(nameof(contract));
            _directMode   = true;
            _keyValueRef  = null;
            InstanceName  = instanceName;

            ParentContext  = null;
            IsChildContext = false;
        }
        public VerifiableObjectContext(IDictionary <string, object> keyValueCollection, VerifiableObjectContract contract, string instanceName)
        {
            _targetObject = null;
            _contract     = contract ?? throw new ArgumentNullException(nameof(contract));
            _directMode   = false;
            _keyValueRef  = keyValueCollection ?? throw new ArgumentNullException(nameof(keyValueCollection));
            InstanceName  = instanceName;

            ParentContext  = null;
            IsChildContext = false;
        }
        internal VerifiableObjectContext(object targetObject, VerifiableObjectContract contract, VerifiableObjectContext parentContext)
        {
            _targetObject = targetObject;
            _contract     = contract ?? throw new ArgumentNullException(nameof(contract));
            _directMode   = true;
            _keyValueRef  = null;
            InstanceName  = contract.IsBasicType ? VerifiableMemberContract.BASIC_TYPE : "Instance";

            ParentContext  = parentContext;
            IsChildContext = parentContext is not null;
        }