/// ------------------------------------------------------------------------------------
        /// <summary>
        /// Parses a single record, going through its fields and parsing them into individual
        /// word entries.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        public void ParseEntry(RecordCacheEntry entry)
        {
            TmpRecCacheAddAction(entry.Id, entry[m_phoneticFieldName]);
            entry.WordEntries = new List <WordCacheEntry>();

            // Parse interlinear fields first, if there are any.
            if (entry.HasInterlinearData)
            {
                ParseEntryAsInterlinear(entry);
            }

            var eticField = entry.Project.GetPhoneticField();

//			var eticMapping = entry.DataSource.FieldMappings.Single(m => m.Field.Name == eticField.Name);

            // If we didn't parse any interlinear fields or the phonetic wasn't among
            // them, make sure it gets parsed before any other non interlinear fields.
            //if (eticMapping.IsParsed && !entry.GetIsInterlinearField(eticField.Name))
            //    ParseSingleFieldInEntry(entry, eticField);

            // I've commented out the check above because it doesn't seem right that the
            // phonetic mapping's IsParsed can be false. Therefore, I will always parse
            // it. I hesitate to delete the commented out code in case I'm overlooking
            // something.
            if (!entry.GetIsInterlinearField(eticField.Name))
            {
                ParseSingleFieldInEntry(entry, eticField);
            }

            // Parse all the non phonetic, non interlinear fields.
            foreach (var mapping in entry.DataSource.FieldMappings.Where(m => m.IsParsed &&
                                                                         m.Field.Type != FieldType.Phonetic && !entry.GetIsInterlinearField(m.Field.Name)))
            {
                ParseSingleFieldInEntry(entry, mapping.Field);
            }
        }