private bool AlreadyParsed(ParseTarget target)
        {
            if (target.Method != null)
                return target.Method.Body != null;

            if (!Program.Classes.ContainsKey(target.ClassName))
                return false;

            var clazz = Program.Classes[target.ClassName];
            if (!target.SpecificMethod)
                return false;

            var key = target.MethodName + target.MethodSignature;
            if(clazz.Methods.ContainsKey(key))
                return clazz.Methods[key].Body != null;

            return false;
        }
        private Class ForceResolveTypeCore(ParseTarget target)
        {
            Console.WriteLine("!! Force resolve !!");

            target.Process();
            var m = Context.Program.Classes[target.ClassName].Methods[target.MethodName + target.MethodSignature];
            return m.Signature.ReturnType.Target;
        }
 public void AddTodo(ParseTarget target)
 {
     if (target !=null && !Todo.Contains(target) && !AlreadyParsed(target))
         Todo.Enqueue(target);
 }