public static void GenerateInheritanceCode(ClassCtorDecl classCtor, ClassType klass)
        {
            if (klass.Base is ClassType baseKlass)   // TODO: Do a proper arguments check and all that!

            {
                FunctionType baseCtor = baseKlass.Constructors.First();

                classCtor.Body.InjectNodes(new List <ASTNode>()
                {
                    new CallNode(new MemberAccessNode(new BaseNode(classCtor.Pos), new IdentifierNode(baseCtor.Name, classCtor.Pos), MemberAccessNode.CtorAccess, classCtor.Pos), classCtor.Pos)
                    {
                        Arguments = new ArgumentsNode(new ExpressionNode(classCtor.Pos, new List <ASTNode>()
                        {
                            new ThisNode(classCtor.Pos)
                        }))
                    }
                }, 0);
            }
        }
        public static FuncDeclNode GenerateBasicConstructor(ClassType klass)
        {
            // The body
            ScopeNode ctorBody = new ScopeNode(klass.CodeOrigin);

            // Create ctor declaration
            ClassCtorDecl ctorDecl = new ClassCtorDecl(klass.Name, klass.CodeOrigin)
            {
                Params = new ParamsNode(klass.CodeOrigin),
                Body   = ctorBody
            };

            // Write a small TODO-ish error
            Log.WriteLine("Warning: Class default constructor does currently not inherit from base object!");

            if (klass.Base is not null)
            {
                GenerateInheritanceCode(ctorDecl, klass);
            }

            // Return constructor
            return(ctorDecl);
        }