private List<StillOneScriptCore.EntityModel.LngObjectsModel.Support.RankedPObjectInfo> SelectRankedPObjectInfo(List<StillOneScriptCore.EntityModel.LngObjectsModel.Support.FeaturesOfMember> features, List<int> secondaryFeatures)
        {
            var tmpResultList = new List<StillOneScriptCore.EntityModel.LngObjectsModel.Support.RankedPObjectInfo>();

            if (mSelfBoxingObject != null)
            {
                if (mSelfBoxingObject.Supports(features) && mSelfBoxingObject.SupportsSecondary(secondaryFeatures))
                {
                    var tmpItem = new StillOneScriptCore.EntityModel.LngObjectsModel.Support.RankedPObjectInfo();

                    tmpItem.Rank = 4;

                    tmpItem.BaseObject = mSelfBoxingObject;

                    tmpResultList.Add(tmpItem);
                }
            }

            if (mBoxingObject != null)
            {
                if (mBoxingObject.Supports(features) && mSelfBoxingObject.SupportsSecondary(secondaryFeatures))
                {
                    var tmpItem = new StillOneScriptCore.EntityModel.LngObjectsModel.Support.RankedPObjectInfo();

                    tmpItem.Rank = 3;

                    tmpItem.BaseObject = mBoxingObject;

                    tmpResultList.Add(tmpItem);
                }
            }

            if (mP_InstancesCollection != null)
            {
                var tmpInstances = mP_InstancesCollection.SelectRankedPObjectInfo(2, features, secondaryFeatures);

                if (!StillOneScriptCore.Common.TypeHelpers.ListHelper.IsEmpty(tmpInstances))
                {
                    tmpResultList.AddRange(tmpInstances);
                }
            }

            var tmpSuperClasses = mSuperClassesCollection.SelectRankedPObjectInfo(1, features, secondaryFeatures);

            if (!StillOneScriptCore.Common.TypeHelpers.ListHelper.IsEmpty(tmpSuperClasses))
            {
                tmpResultList.AddRange(tmpSuperClasses);
            }

            if (StillOneScriptCore.Common.TypeHelpers.ListHelper.IsEmpty(tmpResultList))
            {
                return null;
            }

            return tmpResultList.OrderByDescending(p => p.Rank).ToList();
        }
        public List<StillOneScriptCore.EntityModel.LngObjectsModel.Support.RankedPObjectInfo> SelectRankedPObjectInfo(float multiplierOfRanks, List<StillOneScriptCore.EntityModel.LngObjectsModel.Support.FeaturesOfMember> features, List<int> secondaryFeatures)
        {
            lock (LockObj)
            {
                if (StillOneScriptCore.Common.TypeHelpers.ListHelper.IsEmpty(mItems))
                {
                    return null;
                }

                var tmpResultList = new List<StillOneScriptCore.EntityModel.LngObjectsModel.Support.RankedPObjectInfo>();

                foreach (var item in mItems)
                {
                    if (item.Instance == null)
                    {
                        return null;
                    }

                    if (item.Instance.Supports(features) && item.Instance.SupportsSecondary(secondaryFeatures))
                    {
                        var tmpItem = new StillOneScriptCore.EntityModel.LngObjectsModel.Support.RankedPObjectInfo();

                        tmpItem.Rank = item.Rank * multiplierOfRanks;

                        tmpItem.BaseObject = item.Instance;

                        tmpResultList.Add(tmpItem);
                    }
                }

                return tmpResultList;
            }
        }