public ReadResult Read(object source, DataAccessContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            bool         flag         = false;
            object       value        = null;
            ContactModel contactModel = (ContactModel)source;

            if (contactModel != null)
            {
                AddressList myFacetObject = (AddressList)contactModel.GetFacet(AddressList.DefaultFacetKey);
                value = GetPropValue(myFacetObject.PreferredAddress, this.Indexes?[0]?.ToString());// myFacetObject.PreferredAddress?.GetType()?.GetProperty(this.Indexes?[0]?.ToString())?.GetValue(myFacetObject.PreferredAddress, null)?.ToString();
                if (value != null)
                {
                    flag = true;
                }
            }
            //         PropertyInfo indexerProperty = this.ReflectionUtil.GetIndexerProperty(source, this.Indexes);
            //if (indexerProperty != null && indexerProperty.CanRead)
            //{
            //	IndexerPropertyKeyStatus indexerPropertyKeyStatu = this.IsValueSet(source, context);
            //	if (indexerPropertyKeyStatu == IndexerPropertyKeyStatus.IndexUsedNotNull || indexerPropertyKeyStatu == IndexerPropertyKeyStatus.IndexUsedNull)
            //	{
            //		value = indexerProperty.GetValue(source, this.Indexes.ToArray<object>());
            //	}
            //	flag = true;
            //}
            return(new ReadResult(DateTime.UtcNow)
            {
                ReadValue = value,
                WasValueRead = flag
            });
        }