private static Type ResolveType(string name, Assembly callingAssembly, string sourceInfo)
        {
            Type type = APIUpdaterRuntimeServices.ComponentsFromUnityEngine.FirstOrDefault((Type t) => (t.Name == name || t.FullName == name) && !APIUpdaterRuntimeServices.IsMarkedAsObsolete(t));

            if (type != null)
            {
                Debug.LogWarningFormat("[{1}] Type '{0}' found in UnityEngine, consider replacing with go.AddComponent<{0}>();", new object[]
                {
                    name,
                    sourceInfo
                });
                return(type);
            }
            Type type2 = callingAssembly.GetType(name);

            if (type2 != null)
            {
                Debug.LogWarningFormat("[{1}] Component type '{0}' found on caller assembly. Consider replacing the call method call with: AddComponent<{0}>()", new object[]
                {
                    type2.FullName,
                    sourceInfo
                });
                return(type2);
            }
            type2 = AppDomain.CurrentDomain.GetAssemblies().SelectMany((Assembly a) => a.GetTypes()).SingleOrDefault((Type t) => t.Name == name && typeof(Component).IsAssignableFrom(t));
            if (type2 != null)
            {
                Debug.LogWarningFormat("[{2}] Component type '{0}' found on assembly {1}. Consider replacing the call method with: AddComponent<{0}>()", new object[]
                {
                    type2.FullName,
                    type2.Assembly.Location,
                    sourceInfo
                });
                return(type2);
            }
            Debug.LogErrorFormat("[{1}] Component Type '{0}' not found.", new object[]
            {
                name,
                sourceInfo
            });
            return(null);
        }