private static ClassType CreateClassType(TypeInfo typeInfo)
        {
            var parameterTypes = GetParameterTypes(typeInfo);
            var baseType = GetBaseType(typeInfo);
            var interfaceTypes = GetImplementedInterfaceTypes(typeInfo);

            var logicalType = new ClassType(typeInfo.GetNameWithoutArity(), parameterTypes, baseType, interfaceTypes);
            if (!_typeRepository.ContainsKey(typeInfo)) { _typeRepository.Add(typeInfo, logicalType); }

            foreach (var member in GetMembers(typeInfo))
            {
                logicalType.Members.Add(member);
            }

            return logicalType;
        }
 private static ParameterType CreateParameterType(TypeInfo typeInfo)
 {
     var logicalType = new ParameterType(typeInfo.GetNameWithoutArity());
     if (!_typeRepository.ContainsKey(typeInfo)) { _typeRepository.Add(typeInfo, logicalType); }
     return logicalType;
 }
 private static InterfaceType CreateInterfaceType(TypeInfo typeInfo)
 {
     var parameterTypes = GetParameterTypes(typeInfo);
     var interfaceTypes = GetImplementedInterfaceTypes(typeInfo);
     var logicalType = new InterfaceType(typeInfo.GetNameWithoutArity(), parameterTypes, interfaceTypes);
     if (!_typeRepository.ContainsKey(typeInfo)) { _typeRepository.Add(typeInfo, logicalType); }
     return logicalType;
 }
 private static StructType CreateStructType(TypeInfo typeInfo)
 {
     var parameterTypes = GetParameterTypes(typeInfo);
     var logicalType = new StructType(typeInfo.GetNameWithoutArity(), parameterTypes);
     if (!_typeRepository.ContainsKey(typeInfo)) { _typeRepository.Add(typeInfo, logicalType); }
     return logicalType;
 }