/// <summary>
 /// Loads the object into the database, returns the term that represents it.
 /// </summary>
 /// <param name="inputObject">Object to load</param>
 /// <param name="termDatabase">Database to load it into.</param>
 /// <returns>Database term created for object</returns>
 public Term BuildTermForObject(object inputObject, TermDatabase termDatabase)
 {
     var knownConstant = _nameAndTypeMappings.GetIdentifierForConstantValue(inputObject);
     if (!string.IsNullOrWhiteSpace(knownConstant))
     {
         return termDatabase.Writer.StoreAtom(knownConstant, SymbolType.Identifier);
     }
     else if (inputObject is string)
     {
         return termDatabase.Writer.StoreAtom(Convert.ToString(inputObject), SymbolType.String);
     }
     // NB: IEnumerable must be after string because string is IEnumerable
     else if (inputObject is IEnumerable)
     {
         var listMembers = new List<Term>();
         var inputEnumerable = (IEnumerable)inputObject;
         foreach (var item in inputEnumerable)
         {
             listMembers.Add(BuildTermForObject(item, termDatabase));
         }
         return termDatabase.Writer.StoreTermList(listMembers.ToArray());
     }
     else if (_nameAndTypeMappings.IsNumeric(inputObject))
     {
         return termDatabase.Writer.StoreAtom(Convert.ToString(inputObject), SymbolType.Number);
     }
     else
     {
         return GenerateNonAcTerm(inputObject, termDatabase);
     }
 }
        public void ShouldReturnNullIfConstantNotKnown()
        {
            // Arrange
            var nameAndTypeMappings = new NameAndTypeMappings();

            // Act
            var value = nameAndTypeMappings.GetIdentifierForConstantValue(123);

            // Assert
            Assert.Null(value);
        }