constructor(name = 'localScope', id = undefined) {
        this.restrictedCircuitElementsUsed = [];
        this.id = id || Math.floor((Math.random() * 100000000000) + 1);
        this.CircuitElement = [];
        this.name = name;

        // root object for referring to main canvas - intermediate node uses this
        this.root = new CircuitElement(0, 0, this, 'RIGHT', 1);
        this.backups = [];
        // maintaining a state (history) for redo function
        this.history = [];
        this.timeStamp = new Date().getTime();
        this.verilogMetadata = {
            isVerilogCircuit: false,
            isMainCircuit: false,
            code: '// Write Some Verilog Code Here!',
            subCircuitScopeIds: [],
        };

        this.ox = 0;
        this.oy = 0;
        this.scale = DPR;
        this.stack = [];

        this.initialize();

        // Setting default layout
        this.layout = { // default position
            width: 100,
            height: 40,
            title_x: 50,
            title_y: 13,
            titleEnabled: true,
        };
    }
Class representing a Scope
@class
@param {string} name - name of the circuit
@param {number=} id - a random id for the circuit
@category circuit