/// <summary>
    /// Creates the inventory item from object and reference.
    /// </summary>
    /// <returns>The inventory item from object and reference.</returns>
    /// <param name="fertigkeitRef">Fertigkeit reference.</param>
    /// <param name="fertObject">Fert object.</param>
    /// <typeparam name="U">The 1st type parameter.</typeparam>
    private InventoryItem CreateInventoryItemFromObjectAndRef <U>(U fertigkeitRef, IFertigkeit fertObject) where U : ILernplan
    {
        var item = new InventoryItem(fertigkeitRef.id, fertObject.name, fertigkeitRef.val, fertigkeitRef.cost, fertObject.typ);

        item.SetDependency(fertObject.Dependency);          //Für Waffen und Fachkenntnisse kann es Abhängigkeiten geben
        return(item);
    }
    /// <summary>
    /// Gets the I fertigkeit from reference.
    /// </summary>
    /// <returns>The I fertigkeit from reference.</returns>
    /// <param name="charakterFertigkeit">Charakter fertigkeit.</param>
    /// <param name="fertigkeiten">Fertigkeiten.</param>
    /// <typeparam name="U">The 1st type parameter.</typeparam>
    /// <typeparam name="T">The 2nd type parameter.</typeparam>
    private IFertigkeit GetIFertigkeitFromRef <U, T>(U charakterFertigkeit, List <T> fertigkeiten) where U : ILernplan where T : IFertigkeit
    {
        int         fertId     = charakterFertigkeit.id;
        IFertigkeit fertObject = ObjectXMLHelper.GetMidgardObjectById <T>(fertigkeiten, fertId);

        return(fertObject);
    }
    /// <summary>
    /// Gets the relevant fertigkeit.
    /// </summary>
    /// <returns>The relevant fertigkeit.</returns>
    /// <param name="charakterFertigkeit">Charakter fertigkeit.</param>
    /// <param name="fertigkeiten">Fertigkeiten.</param>
    /// <param name="leBonus">If set to <c>true</c> le bonus.</param>
    /// <param name="leMalus">If set to <c>true</c> le malus.</param>
    /// <typeparam name="U">The 1st type parameter.</typeparam>
    /// <typeparam name="T">The 2nd type parameter.</typeparam>
    public List <InventoryItem> GetRelevantFertigkeit <U, T>(List <U> charakterFertigkeit, List <T> fertigkeiten) where U : ILernplan where T : IFertigkeit
    {
        listItems = new List <InventoryItem> ();
        foreach (var fertigkeitRef in charakterFertigkeit)
        {
            modifyForTrinken(fertigkeitRef);              //1 Filter....
            IFertigkeit fertObject = GetIFertigkeitFromRef(fertigkeitRef, fertigkeiten);

            List <LENEValue> listRestriktionenLE = GetRestriktionen(fertObject.Leiteigenschaft);
            List <LENEValue> listRestriktionenNE = GetRestriktionen(fertObject.Nebeneigenschaft);

            leOk = CheckRelevanceFertigkeit(listRestriktionenLE);              //Hier eventull noch kleiner Bug, weil nicht ganze List durchlaufen
            neOk = CheckRelevanceFertigkeit(listRestriktionenNE);

            //Fachkenntnis kann zur Liste gefügt werden, falls Bedingungen erfüllt sind
            AddToInventoryList(fertigkeitRef, fertObject, listRestriktionenLE);
        }
        return(listItems);
    }
    /// <summary>
    /// Adds to inventory list.
    /// </summary>
    /// <param name="fertigkeitRef">Fertigkeit reference.</param>
    /// <param name="fertObject">Fert object.</param>
    /// <param name="listRestriktionenLE">List restriktionen L.</param>
    /// <typeparam name="U">The 1st type parameter.</typeparam>
    private void AddToInventoryList <U>(U fertigkeitRef, IFertigkeit fertObject, List <LENEValue> listRestriktionenLE) where U : ILernplan
    {
        if (IsLeitAndNebenEigenschaftOk())
        {
            InventoryItem item = CreateInventoryItemFromObjectAndRef(fertigkeitRef, fertObject);
            if (IsLeitEigenschaftBonus())
            {
                AddLEBonus(item, listRestriktionenLE);
            }

            listItems.Add(item);
        }
        if (IsUngelernteFertigkeit())           //nur bei ungelernte Fertigkeiten
        {
            InventoryItem item = CreateInventoryItemFromObjectAndRef(fertigkeitRef, fertObject);
            SubLEBonus(item, listRestriktionenLE);
            //Füge der Liste hinzu
            listItems.Add(item);
        }
    }