/// <summary>
        /// Reads types from module
        /// </summary>
        /// <param name="module"></param>
        /// <param name="types"></param>
        private void ReadTypes(Module module, TypeDefinitionCollection types)
        {
            // first add all types, because i will need find depend types

            foreach (TypeDefinition typeDefinition in types)
            {
                if (typeDefinition.Name != "<Module>")
                {
                    var type = new Type()
                    {
                        FullName = FormatTypeName(typeDefinition),
                        Name = FormatTypeName(typeDefinition)
                    };

                    // try find namespace
                    var nsName = GetNamespaceName(typeDefinition);

                    var ns = (from n in module.Namespaces
                              where n.Name == nsName
                              select n).SingleOrDefault();

                    if (ns == null)
                    {
                        ns = new Namespace()
                               {
                                   Name = nsName,
                                   Module = module
                               };

                        module.Namespaces.Add(ns);
                    }

                    type.Namespace = ns;
                    ns.Types.Add(type);
                }
            }

            foreach (TypeDefinition typeDefinition in types)
            {
                if (typeDefinition.Name != "<Module>")
                {
                    var type =
                        (from n in module.Namespaces
                         from t in n.Types
                         where (t.Name == FormatTypeName(typeDefinition))
                        select t).SingleOrDefault();

                    if (typeDefinition.HasFields)
                        ReadFields(type, typeDefinition.Fields);

                    /*if (typeDefinition.HasEvents)
                        ReadEvents(type, typeDefinition.Events);*/

                    if (typeDefinition.HasMethods)
                        ReadMethods(type, typeDefinition.Methods);

                    if (typeDefinition.HasConstructors)
                        ReadConstructors(type, typeDefinition.Constructors);
                }
            }
        }
        /// <summary>
        /// Reads main module from assembly
        /// </summary>
        /// <param name="moduleDefinition"></param>
        private void ReadModule(ModuleDefinition moduleDefinition)
        {
            this.MainModule = new Module()
                                  {
                                      Name = moduleDefinition.Name
                                  };

            ReadTypes(MainModule, moduleDefinition.Types);
        }