public void GenerateConstraints()
        {
            foreach (var entityTypeSymbol in _entityTypeSymbols)
            {
                GenerateConstraintsForType(entityTypeSymbol, isEntity: true);
            }

            while (_discoveredTypeSymbols.Count > 0)
            {
                var discoveredTypeSymbol = _discoveredTypeSymbols.Dequeue();
                if (_entityTypeSymbols.Contains(discoveredTypeSymbol))
                {
                    continue;
                }

                GenerateConstraintsForType(discoveredTypeSymbol, isEntity: false);
            }

            _objectTheorem.SetPossibleStringValues(_possibleStringValues.ToArray());

            foreach (dynamic propertyAssumption in _propertyAssumptions)
            {
                var memberInfo = GetMemberInfo(propertyAssumption.PropertyExpression);
                _objectTheorem.RegisterMember(memberInfo);
            }
        }