private DictionaryTargetMember(
     QualifiedMember matchedTargetMember,
     DictionaryTargetMember rootDictionaryMember)
     : base(matchedTargetMember.MemberChain, matchedTargetMember)
 {
     KeyType                       = rootDictionaryMember.KeyType;
     ValueType                     = rootDictionaryMember.ValueType;
     _rootDictionaryMember         = rootDictionaryMember;
     _createDictionaryChildMembers = HasObjectEntries || HasSimpleEntries;
 }
        public DictionaryTargetMember(QualifiedMember wrappedTargetMember)
            : base(wrappedTargetMember.MemberChain, wrappedTargetMember)
        {
            var dictionaryTypes = wrappedTargetMember.Type.GetDictionaryTypes();

            KeyType                       = dictionaryTypes.Key;
            ValueType                     = dictionaryTypes.Value;
            _rootDictionaryMember         = this;
            _createDictionaryChildMembers = true;
        }
            public DictionaryMemberKey(
                Type entryDeclaringType,
                string entryKey,
                DictionaryTargetMember dictionaryMember)
            {
                _entryDeclaringType = entryDeclaringType;
                _entryKey           = entryKey;
                DictionaryMember    = dictionaryMember;

                _hashCode = dictionaryMember.ValueType.GetHashCode();

                unchecked
                {
                    _hashCode = (_hashCode * 397) ^ _entryDeclaringType.GetHashCode();
                    _hashCode = (_hashCode * 397) ^ _entryKey.GetHashCode();
                }
            }