static UPackage_Info LoadInfo_fromFile(string file_path)
        {
            var pkg = UnrealLoader.LoadFullPackage(file_path);
            var _R  = new UPackage_Info();

            var imp = new List <UPortedItem_Info>();

            foreach (var v in pkg.Imports)
            {
                UPortedItem_Info upi;
                if (Get_UPIInfo(v.ClassName, v.OuterName, v.ObjectName,
                                out upi, _R))
                {
                    imp.Add(upi);
                }
            }

            var exp = new List <UPortedItem_Info>();

            foreach (var v in pkg.Exports)
            {
                UPortedItem_Info upi;
                if (Get_UPIInfo(v.ClassName, v.OuterName, v.ObjectName,
                                out upi, _R))
                {
                    exp.Add(upi);
                }
            }

            _R.PackageName = Get_PkgName(file_path).ToLower();
            _R.Imports     = imp;
            _R.Exports     = exp;

            return(_R);
        }
        static bool Get_UPIInfo(string class_name, string parent_name, string object_name,
                                out UPortedItem_Info upi_info, UPackage_Info claimer)
        {
            if (ignored_pkgs.Contains(parent_name))
            {
                upi_info = null;
                return(false);
            }
            else
            {
                switch (class_name)
                {
                case "MaterialInstanceConstant":
                    upi_info = new UPortedItem_Info()
                    {
                        Claimer  = claimer,
                        ObjClass = UObjectClass.MaterialInstanceConstant,
                        Parent   = parent_name.ToLower(),
                        ObjName  = object_name
                    };
                    return(true);

                case "SkeletalMesh":
                    upi_info = new UPortedItem_Info()
                    {
                        Claimer  = claimer,
                        ObjClass = UObjectClass.SkeletalMesh,
                        Parent   = parent_name.ToLower(),
                        ObjName  = object_name
                    };
                    return(true);

                case "Texture2D":
                    upi_info = new UPortedItem_Info()
                    {
                        Claimer  = claimer,
                        ObjClass = UObjectClass.Texture2D,
                        Parent   = parent_name.ToLower(),
                        ObjName  = object_name
                    };
                    return(true);

                default:
                    upi_info = null;
                    return(false);
                }
            }
        }