public override bool TryResolve(FailMode failReportMode)
            {
                failReportMode = FailMode.LogErrors;
                bool flag  = typeof(Def).IsAssignableFrom(typeof(K));
                bool flag2 = typeof(Def).IsAssignableFrom(typeof(V));
                List <Pair <K, V> > list = new List <Pair <K, V> >();

                foreach (XmlNode xmlNode in this.wantedDictRefs)
                {
                    XmlNode xmlNode2 = xmlNode["key"];
                    XmlNode xmlNode3 = xmlNode["value"];
                    K       first;
                    if (flag)
                    {
                        first = DirectXmlCrossRefLoader.TryResolveDef <K>(xmlNode2.InnerText, failReportMode, this.debugWanterInfo);
                    }
                    else
                    {
                        first = DirectXmlToObject.ObjectFromXml <K>(xmlNode2, true);
                    }
                    V second;
                    if (flag2)
                    {
                        second = DirectXmlCrossRefLoader.TryResolveDef <V>(xmlNode3.InnerText, failReportMode, this.debugWanterInfo);
                    }
                    else
                    {
                        second = DirectXmlToObject.ObjectFromXml <V>(xmlNode3, true);
                    }
                    list.Add(new Pair <K, V>(first, second));
                }
                Dictionary <K, V> dictionary = (Dictionary <K, V>) this.wanter;

                dictionary.Clear();
                foreach (Pair <K, V> pair in list)
                {
                    try
                    {
                        dictionary.Add(pair.First, pair.Second);
                    }
                    catch
                    {
                        Log.Error(string.Concat(new object[]
                        {
                            "Failed to load key/value pair: ",
                            pair.First,
                            ", ",
                            pair.Second
                        }), false);
                    }
                }
                return(true);
            }
            public override bool TryResolve(FailMode failReportMode)
            {
                bool flag = false;

                for (int i = 0; i < this.defNames.Count; i++)
                {
                    T t = DirectXmlCrossRefLoader.TryResolveDef <T>(this.defNames[i], failReportMode, this.debugWanterInfo);
                    if (t != null)
                    {
                        ((List <T>) this.wanter).Add(t);
                        this.defNames.RemoveAt(i);
                        i--;
                    }
                    else
                    {
                        flag = true;
                    }
                }
                return(!flag);
            }
            public override bool TryResolve(FailMode failReportMode)
            {
                failReportMode = FailMode.LogErrors;
                bool flag  = typeof(Def).IsAssignableFrom(typeof(K));
                bool flag2 = typeof(Def).IsAssignableFrom(typeof(V));
                List <Pair <K, V> > list = new List <Pair <K, V> >();

                foreach (XmlNode wantedDictRef in this.wantedDictRefs)
                {
                    XmlNode xmlNode  = wantedDictRef["key"];
                    XmlNode xmlNode2 = wantedDictRef["value"];
                    K       first    = (!flag) ? DirectXmlToObject.ObjectFromXml <K>(xmlNode, true) : DirectXmlCrossRefLoader.TryResolveDef <K>(xmlNode.InnerText, failReportMode);
                    V       second   = (!flag2) ? DirectXmlToObject.ObjectFromXml <V>(xmlNode2, true) : DirectXmlCrossRefLoader.TryResolveDef <V>(xmlNode2.InnerText, failReportMode);
                    list.Add(new Pair <K, V>(first, second));
                }
                Dictionary <K, V> dictionary = (Dictionary <K, V>)base.wanter;

                dictionary.Clear();
                foreach (Pair <K, V> item in list)
                {
                    try
                    {
                        dictionary.Add(item.First, item.Second);
                    }
                    catch
                    {
                        Log.Error("Failed to load key/value pair: " + item.First + ", " + item.Second);
                    }
                }
                return(true);
            }