Checks internal properties in Runtime.getProperties output

Running test: generatorFunction
expression: (function* foo() { yield 1 })
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[FunctionLocation]]
                value : {
                    description : Object
                    subtype : internal#location
                    type : object
                    value : {
                        columnNumber : 14
                        lineNumber : 0
                        scriptId : <scriptId>
                    }
                }
            }
            [1] : {
                name : [[IsGenerator]]
                value : {
                    type : boolean
                    value : true
                }
            }
            [2] : {
                name : [[Prototype]]
                value : {
                    className : GeneratorFunction
                    description : GeneratorFunction
                    objectId : <objectId>
                    type : object
                }
            }
            [3] : {
                name : [[Scopes]]
                value : {
                    className : Array
                    description : Scopes[1]
                    objectId : <objectId>
                    subtype : internal#scopeList
                    type : object
                }
            }
        ]
    }
}

Running test: regularFunction
expression: (function foo() {})
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[FunctionLocation]]
                value : {
                    description : Object
                    subtype : internal#location
                    type : object
                    value : {
                        columnNumber : 13
                        lineNumber : 0
                        scriptId : <scriptId>
                    }
                }
            }
            [1] : {
                name : [[Prototype]]
                value : {
                    className : Function
                    description : function () { [native code] }
                    objectId : <objectId>
                    type : function
                }
            }
            [2] : {
                name : [[Scopes]]
                value : {
                    className : Array
                    description : Scopes[1]
                    objectId : <objectId>
                    subtype : internal#scopeList
                    type : object
                }
            }
        ]
    }
}

Running test: boxedObjects
expression: new Number(239)
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[Prototype]]
                value : {
                    className : Number
                    description : Number
                    objectId : <objectId>
                    type : object
                }
            }
            [1] : {
                name : [[PrimitiveValue]]
                value : {
                    description : 239
                    type : number
                    value : 239
                }
            }
        ]
    }
}
expression: new Boolean(false)
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[Prototype]]
                value : {
                    className : Boolean
                    description : Boolean
                    objectId : <objectId>
                    type : object
                }
            }
            [1] : {
                name : [[PrimitiveValue]]
                value : {
                    type : boolean
                    value : false
                }
            }
        ]
    }
}
expression: new String('abc')
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[Prototype]]
                value : {
                    className : String
                    description : String
                    objectId : <objectId>
                    type : object
                }
            }
            [1] : {
                name : [[PrimitiveValue]]
                value : {
                    type : string
                    value : abc
                }
            }
        ]
    }
}
expression: Object(Symbol(42))
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[Prototype]]
                value : {
                    className : Symbol
                    description : Symbol
                    objectId : <objectId>
                    type : object
                }
            }
            [1] : {
                name : [[PrimitiveValue]]
                value : {
                    description : Symbol(42)
                    objectId : <objectId>
                    type : symbol
                }
            }
        ]
    }
}
expression: Object(BigInt(2))
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[Prototype]]
                value : {
                    className : BigInt
                    description : BigInt
                    objectId : <objectId>
                    type : object
                }
            }
            [1] : {
                name : [[PrimitiveValue]]
                value : {
                    description : 2n
                    type : bigint
                    unserializableValue : 2n
                }
            }
        ]
    }
}

Running test: promise
expression: Promise.resolve(42)
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[Prototype]]
                value : {
                    className : Promise
                    description : Promise
                    objectId : <objectId>
                    type : object
                }
            }
            [1] : {
                name : [[PromiseState]]
                value : {
                    type : string
                    value : fulfilled
                }
            }
            [2] : {
                name : [[PromiseResult]]
                value : {
                    description : 42
                    type : number
                    value : 42
                }
            }
        ]
    }
}
expression: new Promise(() => undefined)
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[Prototype]]
                value : {
                    className : Promise
                    description : Promise
                    objectId : <objectId>
                    type : object
                }
            }
            [1] : {
                name : [[PromiseState]]
                value : {
                    type : string
                    value : pending
                }
            }
            [2] : {
                name : [[PromiseResult]]
                value : {
                    type : undefined
                }
            }
        ]
    }
}

Running test: generatorObject
expression: gen1
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[GeneratorLocation]]
                value : {
                    description : Object
                    subtype : internal#location
                    type : object
                    value : {
                        columnNumber : 13
                        lineNumber : 8
                        scriptId : <scriptId>
                    }
                }
            }
            [1] : {
                name : [[Prototype]]
                value : {
                    className : Generator
                    description : Generator
                    objectId : <objectId>
                    type : object
                }
            }
            [2] : {
                name : [[GeneratorState]]
                value : {
                    type : string
                    value : suspended
                }
            }
            [3] : {
                name : [[GeneratorFunction]]
                value : {
                    className : GeneratorFunction
                    description : function* foo() {   yield 1; }
                    objectId : <objectId>
                    type : function
                }
            }
            [4] : {
                name : [[GeneratorReceiver]]
                value : {
                    className : global
                    description : global
                    objectId : <objectId>
                    type : object
                }
            }
            [5] : {
                name : [[Scopes]]
                value : {
                    className : Array
                    description : Scopes[2]
                    objectId : <objectId>
                    subtype : internal#scopeList
                    type : object
                }
            }
        ]
    }
}
expression: gen1.next();gen1
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[GeneratorLocation]]
                value : {
                    description : Object
                    subtype : internal#location
                    type : object
                    value : {
                        columnNumber : 2
                        lineNumber : 9
                        scriptId : <scriptId>
                    }
                }
            }
            [1] : {
                name : [[Prototype]]
                value : {
                    className : Generator
                    description : Generator
                    objectId : <objectId>
                    type : object
                }
            }
            [2] : {
                name : [[GeneratorState]]
                value : {
                    type : string
                    value : suspended
                }
            }
            [3] : {
                name : [[GeneratorFunction]]
                value : {
                    className : GeneratorFunction
                    description : function* foo() {   yield 1; }
                    objectId : <objectId>
                    type : function
                }
            }
            [4] : {
                name : [[GeneratorReceiver]]
                value : {
                    className : global
                    description : global
                    objectId : <objectId>
                    type : object
                }
            }
            [5] : {
                name : [[Scopes]]
                value : {
                    className : Array
                    description : Scopes[2]
                    objectId : <objectId>
                    subtype : internal#scopeList
                    type : object
                }
            }
        ]
    }
}
expression: gen1.next();gen1
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[GeneratorLocation]]
                value : {
                    description : Object
                    subtype : internal#location
                    type : object
                    value : {
                        columnNumber : 13
                        lineNumber : 8
                        scriptId : <scriptId>
                    }
                }
            }
            [1] : {
                name : [[Prototype]]
                value : {
                    className : Generator
                    description : Generator
                    objectId : <objectId>
                    type : object
                }
            }
            [2] : {
                name : [[GeneratorState]]
                value : {
                    type : string
                    value : closed
                }
            }
            [3] : {
                name : [[GeneratorFunction]]
                value : {
                    className : GeneratorFunction
                    description : function* foo() {   yield 1; }
                    objectId : <objectId>
                    type : function
                }
            }
            [4] : {
                name : [[GeneratorReceiver]]
                value : {
                    className : global
                    description : global
                    objectId : <objectId>
                    type : object
                }
            }
        ]
    }
}

Running test: generatorObjectDebuggerDisabled
expression: gen2
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[GeneratorLocation]]
                value : {
                    description : Object
                    subtype : internal#location
                    type : object
                    value : {
                        columnNumber : 13
                        lineNumber : 8
                        scriptId : <scriptId>
                    }
                }
            }
            [1] : {
                name : [[Prototype]]
                value : {
                    className : Generator
                    description : Generator
                    objectId : <objectId>
                    type : object
                }
            }
            [2] : {
                name : [[GeneratorState]]
                value : {
                    type : string
                    value : suspended
                }
            }
            [3] : {
                name : [[GeneratorFunction]]
                value : {
                    className : GeneratorFunction
                    description : function* foo() {   yield 1; }
                    objectId : <objectId>
                    type : function
                }
            }
            [4] : {
                name : [[GeneratorReceiver]]
                value : {
                    className : global
                    description : global
                    objectId : <objectId>
                    type : object
                }
            }
            [5] : {
                name : [[Scopes]]
                value : {
                    className : Array
                    description : Scopes[2]
                    objectId : <objectId>
                    subtype : internal#scopeList
                    type : object
                }
            }
        ]
    }
}
expression: gen2.next();gen2
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[GeneratorLocation]]
                value : {
                    description : Object
                    subtype : internal#location
                    type : object
                    value : {
                        columnNumber : 2
                        lineNumber : 9
                        scriptId : <scriptId>
                    }
                }
            }
            [1] : {
                name : [[Prototype]]
                value : {
                    className : Generator
                    description : Generator
                    objectId : <objectId>
                    type : object
                }
            }
            [2] : {
                name : [[GeneratorState]]
                value : {
                    type : string
                    value : suspended
                }
            }
            [3] : {
                name : [[GeneratorFunction]]
                value : {
                    className : GeneratorFunction
                    description : function* foo() {   yield 1; }
                    objectId : <objectId>
                    type : function
                }
            }
            [4] : {
                name : [[GeneratorReceiver]]
                value : {
                    className : global
                    description : global
                    objectId : <objectId>
                    type : object
                }
            }
            [5] : {
                name : [[Scopes]]
                value : {
                    className : Array
                    description : Scopes[2]
                    objectId : <objectId>
                    subtype : internal#scopeList
                    type : object
                }
            }
        ]
    }
}
expression: gen2.next();gen2
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[GeneratorLocation]]
                value : {
                    description : Object
                    subtype : internal#location
                    type : object
                    value : {
                        columnNumber : 13
                        lineNumber : 8
                        scriptId : <scriptId>
                    }
                }
            }
            [1] : {
                name : [[Prototype]]
                value : {
                    className : Generator
                    description : Generator
                    objectId : <objectId>
                    type : object
                }
            }
            [2] : {
                name : [[GeneratorState]]
                value : {
                    type : string
                    value : closed
                }
            }
            [3] : {
                name : [[GeneratorFunction]]
                value : {
                    className : GeneratorFunction
                    description : function* foo() {   yield 1; }
                    objectId : <objectId>
                    type : function
                }
            }
            [4] : {
                name : [[GeneratorReceiver]]
                value : {
                    className : global
                    description : global
                    objectId : <objectId>
                    type : object
                }
            }
        ]
    }
}

Running test: iteratorObject
expression: (new Map([[1,2]])).entries()
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[Prototype]]
                value : {
                    className : Map Iterator
                    description : Map Iterator
                    objectId : <objectId>
                    type : object
                }
            }
            [1] : {
                name : [[IteratorHasMore]]
                value : {
                    type : boolean
                    value : true
                }
            }
            [2] : {
                name : [[IteratorIndex]]
                value : {
                    description : 0
                    type : number
                    value : 0
                }
            }
            [3] : {
                name : [[IteratorKind]]
                value : {
                    type : string
                    value : entries
                }
            }
            [4] : {
                name : [[Entries]]
                value : {
                    className : Array
                    description : Array(1)
                    objectId : <objectId>
                    subtype : array
                    type : object
                }
            }
        ]
    }
}
expression: (new Set([[1,2]])).entries()
{
    id : <messageId>
    result : {
        internalProperties : [
            [0] : {
                name : [[Prototype]]
                value : {
                    className : Set Iterator
                    description : Set Iterator
                    objectId : <objectId>
                    type : object
                }
            }
            [1] : {
                name : [[IteratorHasMore]]
                value : {
                    type : boolean
                    value : true
                }
            }
            [2] : {
                name : [[IteratorIndex]]
                value : {
                    description : 0
                    type : number
                    value : 0
                }
            }
            [3] : {
                name : [[IteratorKind]]
                value : {
                    type : string
                    value : entries
                }
            }
            [4] : {
                name : [[Entries]]
                value : {
                    className : Array
                    description : Array(1)
                    objectId : <objectId>
                    subtype : array
                    type : object
                }
            }
        ]
    }
}
