constructor(
        x,
        y,
        scope = globalScope,
        dir = "RIGHT",
        inputLength = 2,
        bitWidth = 1
    ) {
        /**
         * super call
         */
        super(x, y, scope, dir, bitWidth);
        /* this is done in this.baseSetup() now
        this.scope['AndGate'].push(this);
        */
        this.rectangleObject = false;
        this.setDimensions(15, 20);
        this.inp = [];
        this.inputSize = inputLength;

        // variable inputLength , node creation
        if (inputLength % 2 === 1) {
            for (let i = 0; i < inputLength / 2 - 1; i++) {
                const a = new Node(-10, -10 * (i + 1), 0, this);
                this.inp.push(a);
            }
            let a = new Node(-10, 0, 0, this);
            this.inp.push(a);
            for (let i = inputLength / 2 + 1; i < inputLength; i++) {
                a = new Node(-10, 10 * (i + 1 - inputLength / 2 - 1), 0, this);
                this.inp.push(a);
            }
        } else {
            for (let i = 0; i < inputLength / 2; i++) {
                const a = new Node(-10, -10 * (i + 1), 0, this);
                this.inp.push(a);
            }
            for (let i = inputLength / 2; i < inputLength; i++) {
                const a = new Node(
                    -10,
                    10 * (i + 1 - inputLength / 2),
                    0,
                    this
                );
                this.inp.push(a);
            }
        }

        this.output1 = new Node(20, 0, 1, this);
    }
@class
AndGate
@extends CircuitElement
@param {number} x - x coordinate of And Gate.
@param {number} y - y coordinate of And Gate.
@param {Scope=} scope - Cirucit on which and gate is drawn
@param {string=} dir - direction of And Gate
@param {number=} inputLength - number of input nodes
@param {number=} bitWidth - bit width per node.
@category modules