public AuxiliaryWriter <TKey> ReadValue(IValueReader valueReader) { var auxiliaryWriter = new AuxiliaryWriter <TKey>(); if (valueReader is IValueFiller <TKey> tReader) { tReader.FillValue(auxiliaryWriter); } else if (IsArray) { valueReader.ReadArray(auxiliaryWriter.As <int>()); } else { valueReader.ReadObject(auxiliaryWriter.As <string>()); } return(auxiliaryWriter); }