Checks internal [[Entries]] in Runtime.getProperties output

Running test: maps
expression: new Map([[1,2],[3,4]])
[
    [0] : {
        key : 1
        value : 2
    }
    [1] : {
        key : 3
        value : 4
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : {1 => 2}
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 1
                value : {
                    className : Object
                    description : {3 => 4}
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [2] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 2
                    type : number
                    value : 2
                }
                writable : true
            }
        ]
    }
}
expression: new Map()
[
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 0
                    type : number
                    value : 0
                }
                writable : true
            }
        ]
    }
}

Running test: mapIterators
expression: new Map([[1,2],[3,4]]).entries()
[
    [0] : {
        key : 1
        value : 2
    }
    [1] : {
        key : 3
        value : 4
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : {1 => 2}
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 1
                value : {
                    className : Object
                    description : {3 => 4}
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [2] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 2
                    type : number
                    value : 2
                }
                writable : true
            }
        ]
    }
}
expression: it = new Map([[1,2],[3,4]]).entries(); it.next(); it
[
    [0] : {
        key : 3
        value : 4
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : {3 => 4}
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 1
                    type : number
                    value : 1
                }
                writable : true
            }
        ]
    }
}
expression: it = new Map([[1,2],[3,4]]).keys(); it.next(); it
[
    [0] : {
        value : 3
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : 3
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 1
                    type : number
                    value : 1
                }
                writable : true
            }
        ]
    }
}
expression: it = new Map([[1,2],[3,4]]).values(); it.next(); it
[
    [0] : {
        value : 4
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : 4
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 1
                    type : number
                    value : 1
                }
                writable : true
            }
        ]
    }
}
expression: it = new Map([[1,2],[3,4]]).entries(); it.next(); it.next(); it
[
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 0
                    type : number
                    value : 0
                }
                writable : true
            }
        ]
    }
}

Running test: sets
expression: new Set([1,2])
[
    [0] : {
        value : 1
    }
    [1] : {
        value : 2
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : 1
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 1
                value : {
                    className : Object
                    description : 2
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [2] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 2
                    type : number
                    value : 2
                }
                writable : true
            }
        ]
    }
}
expression: new Set()
[
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 0
                    type : number
                    value : 0
                }
                writable : true
            }
        ]
    }
}

Running test: setIterators
expression: new Set([1,2]).values()
[
    [0] : {
        value : 1
    }
    [1] : {
        value : 2
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : 1
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 1
                value : {
                    className : Object
                    description : 2
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [2] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 2
                    type : number
                    value : 2
                }
                writable : true
            }
        ]
    }
}
expression: it = new Set([1,2]).values(); it.next(); it
[
    [0] : {
        value : 2
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : 2
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 1
                    type : number
                    value : 1
                }
                writable : true
            }
        ]
    }
}
expression: it = new Set([1,2]).keys(); it.next(); it
[
    [0] : {
        value : 2
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : 2
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 1
                    type : number
                    value : 1
                }
                writable : true
            }
        ]
    }
}
expression: it = new Set([1,2]).entries(); it.next(); it
[
    [0] : {
        value : 2
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : 2
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 1
                    type : number
                    value : 1
                }
                writable : true
            }
        ]
    }
}
expression: it = new Set([1,2]).values(); it.next(); it.next(); it
[
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 0
                    type : number
                    value : 0
                }
                writable : true
            }
        ]
    }
}

Running test: weakMaps
expression: new WeakMap()
[
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 0
                    type : number
                    value : 0
                }
                writable : true
            }
        ]
    }
}
expression: new WeakMap([[{ a: 2 }, 42]])
[
    [0] : {
        key : {
            a : 2
        }
        value : 42
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : {Object => 42}
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 1
                    type : number
                    value : 1
                }
                writable : true
            }
        ]
    }
}

Running test: weakSets
expression: new WeakSet()
[
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 0
                    type : number
                    value : 0
                }
                writable : true
            }
        ]
    }
}
expression: new WeakSet([{a:2}])
[
    [0] : {
        value : {
            a : 2
        }
    }
]
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : 0
                value : {
                    className : Object
                    description : Object
                    objectId : <objectId>
                    subtype : internal#entry
                    type : object
                }
                writable : true
            }
            [1] : {
                configurable : false
                enumerable : false
                isOwn : true
                name : length
                value : {
                    description : 1
                    type : number
                    value : 1
                }
                writable : true
            }
        ]
    }
}
