Tests Runtime.RemoteObject.

Running test: testNull
'null', returnByValue: false, generatePreview: false
{
    result : {
        subtype : null
        type : object
        value : null
    }
}
'null', returnByValue: true, generatePreview: false
{
    result : {
        subtype : null
        type : object
        value : null
    }
}
'null', returnByValue: false, generatePreview: true
{
    result : {
        subtype : null
        type : object
        value : null
    }
}

Running test: testBoolean
'true', returnByValue: false, generatePreview: false
{
    result : {
        type : boolean
        value : true
    }
}
'false', returnByValue: false, generatePreview: false
{
    result : {
        type : boolean
        value : false
    }
}
'true', returnByValue: true, generatePreview: false
{
    result : {
        type : boolean
        value : true
    }
}
'true', returnByValue: false, generatePreview: true
{
    result : {
        type : boolean
        value : true
    }
}

Running test: testNumber
'0 / {}', returnByValue: false, generatePreview: false
{
    result : {
        description : NaN
        type : number
        unserializableValue : NaN
    }
}
'-0', returnByValue: false, generatePreview: false
{
    result : {
        description : -0
        type : number
        unserializableValue : -0
    }
}
'0', returnByValue: false, generatePreview: false
{
    result : {
        description : 0
        type : number
        value : 0
    }
}
'1/0', returnByValue: false, generatePreview: false
{
    result : {
        description : Infinity
        type : number
        unserializableValue : Infinity
    }
}
'-1/0', returnByValue: false, generatePreview: false
{
    result : {
        description : -Infinity
        type : number
        unserializableValue : -Infinity
    }
}
'2.3456', returnByValue: false, generatePreview: false
{
    result : {
        description : 2.3456
        type : number
        value : 2.3456
    }
}
'2.3456', returnByValue: true, generatePreview: false
{
    result : {
        description : 2.3456
        type : number
        value : 2.3456
    }
}
'1/0', returnByValue: true, generatePreview: false
{
    result : {
        description : Infinity
        type : number
        unserializableValue : Infinity
    }
}
'({a: 1/0})', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
            a : null
        }
    }
}

Running test: testUndefined
'undefined', returnByValue: false, generatePreview: false
{
    result : {
        type : undefined
    }
}
'undefined', returnByValue: true, generatePreview: false
{
    result : {
        type : undefined
    }
}
'({a : undefined})', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
        }
    }
}
'([1, undefined])', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : [
            [0] : 1
            [1] : null
        ]
    }
}

Running test: testString
''Hello!'', returnByValue: false, generatePreview: false
{
    result : {
        type : string
        value : Hello!
    }
}
''Hello!'', returnByValue: true, generatePreview: false
{
    result : {
        type : string
        value : Hello!
    }
}
''Hello!'', returnByValue: false, generatePreview: true
{
    result : {
        type : string
        value : Hello!
    }
}

Running test: testSymbol
'Symbol()', returnByValue: false, generatePreview: true
{
    result : {
        description : Symbol()
        objectId : <objectId>
        type : symbol
    }
}
'Symbol(42)', returnByValue: false, generatePreview: true
{
    result : {
        description : Symbol(42)
        objectId : <objectId>
        type : symbol
    }
}
'Symbol('abc')', returnByValue: false, generatePreview: true
{
    result : {
        description : Symbol(abc)
        objectId : <objectId>
        type : symbol
    }
}
'Symbol('abc')', returnByValue: true, generatePreview: false
{
    error : {
        code : -32000
        message : Object couldn't be returned by value
    }
    id : <messageId>
}

Running test: testReturnByValue
Empty object
'({})', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
        }
    }
}
Object with properties
'({a:1, b:2})', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
            a : 1
            b : 2
        }
    }
}
Object with cycle
'a = {};a.a = a; a', returnByValue: true, generatePreview: false
{
    code : -32000
    message : Object reference chain is too long
}
Function () => 42
'() => 42', returnByValue: true, generatePreview: false
{
    result : {
        type : function
        value : {
        }
    }
}
Symbol(42)
'Symbol(42)', returnByValue: true, generatePreview: false
{
    code : -32000
    message : Object couldn't be returned by value
}
Error object
'new Error()', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
        }
    }
}

Running test: testFunction
'(() => 42)', returnByValue: false, generatePreview: false
{
    result : {
        className : Function
        description : () => 42
        objectId : <objectId>
        type : function
    }
}
'(function() { return 42 })', returnByValue: false, generatePreview: false
{
    result : {
        className : Function
        description : function() { return 42 }
        objectId : <objectId>
        type : function
    }
}
'(function name() { return 42 })', returnByValue: false, generatePreview: false
{
    result : {
        className : Function
        description : function name() { return 42 }
        objectId : <objectId>
        type : function
    }
}
'(async function asyncName() { return 42 })', returnByValue: false, generatePreview: false
{
    result : {
        className : AsyncFunction
        description : async function asyncName() { return 42 }
        objectId : <objectId>
        type : function
    }
}
'(async () => 42)', returnByValue: false, generatePreview: false
{
    result : {
        className : AsyncFunction
        description : async () => 42
        objectId : <objectId>
        type : function
    }
}
'(function (a) { return a; }).bind(null, 42)', returnByValue: false, generatePreview: false
{
    result : {
        className : Function
        description : function () { [native code] }
        objectId : <objectId>
        type : function
    }
}
'a = (function() { return 42 }); a.b = 2; a', returnByValue: false, generatePreview: true
{
    result : {
        className : Function
        description : function() { return 42 }
        objectId : <objectId>
        type : function
    }
}
'(function() { return 42 })', returnByValue: true, generatePreview: false
{
    result : {
        type : function
        value : {
        }
    }
}
'a = (function() { return 42 }); a.b = 2; a', returnByValue: true, generatePreview: false
{
    result : {
        type : function
        value : {
            b : 2
        }
    }
}

Running test: testBigInt
'1n', returnByValue: false, generatePreview: false
{
    result : {
        description : 1n
        type : bigint
        unserializableValue : 1n
    }
}
'-5n', returnByValue: false, generatePreview: false
{
    result : {
        description : -5n
        type : bigint
        unserializableValue : -5n
    }
}
'1234567890123456789012345678901234567890n', returnByValue: false, generatePreview: false
{
    result : {
        description : 1234567890123456789012345678901234567890n
        type : bigint
        unserializableValue : 1234567890123456789012345678901234567890n
    }
}
'-5n', returnByValue: true, generatePreview: false
{
    result : {
        description : -5n
        type : bigint
        unserializableValue : -5n
    }
}
'-5n', returnByValue: false, generatePreview: true
{
    result : {
        description : -5n
        type : bigint
        unserializableValue : -5n
    }
}

Running test: testRegExp
'/w+/g', returnByValue: false, generatePreview: false
{
    result : {
        className : RegExp
        description : /w+/g
        objectId : <objectId>
        subtype : regexp
        type : object
    }
}
'/w+/i', returnByValue: false, generatePreview: false
{
    result : {
        className : RegExp
        description : /w+/i
        objectId : <objectId>
        subtype : regexp
        type : object
    }
}
'/w+/m', returnByValue: false, generatePreview: false
{
    result : {
        className : RegExp
        description : /w+/m
        objectId : <objectId>
        subtype : regexp
        type : object
    }
}
'/w+/s', returnByValue: false, generatePreview: false
{
    result : {
        className : RegExp
        description : /w+/s
        objectId : <objectId>
        subtype : regexp
        type : object
    }
}
'/w+/u', returnByValue: false, generatePreview: false
{
    result : {
        className : RegExp
        description : /w+/u
        objectId : <objectId>
        subtype : regexp
        type : object
    }
}
'/w+/y', returnByValue: false, generatePreview: false
{
    result : {
        className : RegExp
        description : /w+/y
        objectId : <objectId>
        subtype : regexp
        type : object
    }
}
'/w+/gimsuy', returnByValue: false, generatePreview: false
{
    result : {
        className : RegExp
        description : /w+/gimsuy
        objectId : <objectId>
        subtype : regexp
        type : object
    }
}
'new RegExp('\w+', 'g')', returnByValue: false, generatePreview: false
{
    result : {
        className : RegExp
        description : /w+/g
        objectId : <objectId>
        subtype : regexp
        type : object
    }
}
'var re = new RegExp('\w+', 'g');
        re.prop = 32;
        re', returnByValue: false, generatePreview: true
{
    result : {
        className : RegExp
        description : /w+/g
        objectId : <objectId>
        preview : {
            description : /w+/g
            overflow : false
            properties : [
                [0] : {
                    name : prop
                    type : number
                    value : 32
                }
                [1] : {
                    name : lastIndex
                    type : number
                    value : 0
                }
            ]
            subtype : regexp
            type : object
        }
        subtype : regexp
        type : object
    }
}
'var re = new RegExp('\w+', 'g');
        re.prop = 32;
        re', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
            prop : 32
        }
    }
}

Running test: testDate
'new Date('May 18, 1991 03:24:00')', returnByValue: false, generatePreview: true
{
    result : {
        className : Date
        description : <expected description>
        objectId : <objectId>
        preview : {
            description : <expected description>
            overflow : false
            properties : [
            ]
            subtype : date
            type : object
        }
        subtype : date
        type : object
    }
}
'new Date(2018, 9, 31)', returnByValue: false, generatePreview: true
{
    result : {
        className : Date
        description : <expected description>
        objectId : <objectId>
        preview : {
            description : <expected description>
            overflow : false
            properties : [
            ]
            subtype : date
            type : object
        }
        subtype : date
        type : object
    }
}
'a = new Date(2018, 9, 31); a.b = 2; a', returnByValue: false, generatePreview: true
{
    result : {
        className : Date
        description : <expected description>
        objectId : <objectId>
        preview : {
            description : <expected description>
            overflow : false
            properties : [
                [0] : {
                    name : b
                    type : number
                    value : 2
                }
            ]
            subtype : date
            type : object
        }
        subtype : date
        type : object
    }
}

Running test: testMap
'new Map()', returnByValue: false, generatePreview: true
{
    result : {
        className : Map
        description : Map(0)
        objectId : <objectId>
        preview : {
            description : Map(0)
            overflow : false
            properties : [
            ]
            subtype : map
            type : object
        }
        subtype : map
        type : object
    }
}
'new Map([[1,2]])', returnByValue: false, generatePreview: true
{
    result : {
        className : Map
        description : Map(1)
        objectId : <objectId>
        preview : {
            description : Map(1)
            entries : [
                [0] : {
                    key : {
                        description : 1
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                    value : {
                        description : 2
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
            ]
            overflow : false
            properties : [
            ]
            subtype : map
            type : object
        }
        subtype : map
        type : object
    }
}
'a = new Map(); a.set(a, a); a', returnByValue: false, generatePreview: true
{
    result : {
        className : Map
        description : Map(1)
        objectId : <objectId>
        preview : {
            description : Map(1)
            entries : [
                [0] : {
                    key : {
                        description : Map(1)
                        overflow : true
                        properties : [
                        ]
                        subtype : map
                        type : object
                    }
                    value : {
                        description : Map(1)
                        overflow : true
                        properties : [
                        ]
                        subtype : map
                        type : object
                    }
                }
            ]
            overflow : false
            properties : [
            ]
            subtype : map
            type : object
        }
        subtype : map
        type : object
    }
}
'new Map([['a','b']])', returnByValue: false, generatePreview: false
{
    result : {
        className : Map
        description : Map(1)
        objectId : <objectId>
        subtype : map
        type : object
    }
}
'({ a: new Map([['a','b']]) })', returnByValue: false, generatePreview: true
{
    result : {
        className : Object
        description : Object
        objectId : <objectId>
        preview : {
            description : Object
            overflow : false
            properties : [
                [0] : {
                    name : a
                    subtype : map
                    type : object
                    value : Map(1)
                }
            ]
            type : object
        }
        type : object
    }
}
'm = new Map([['a', {b: 2}]])
        m.d = 42;
        m', returnByValue: false, generatePreview: true
{
    result : {
        className : Map
        description : Map(1)
        objectId : <objectId>
        preview : {
            description : Map(1)
            entries : [
                [0] : {
                    key : {
                        description : a
                        overflow : false
                        properties : [
                        ]
                        type : string
                    }
                    value : {
                        description : Object
                        overflow : false
                        properties : [
                            [0] : {
                                name : b
                                type : number
                                value : 2
                            }
                        ]
                        type : object
                    }
                }
            ]
            overflow : false
            properties : [
                [0] : {
                    name : d
                    type : number
                    value : 42
                }
            ]
            subtype : map
            type : object
        }
        subtype : map
        type : object
    }
}
'm = new Map([['a', {b: 2}]])
        m.d = 42;
        m', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
            d : 42
        }
    }
}
'new Map([['a', {b: 2}]]).values()', returnByValue: false, generatePreview: false
{
    result : {
        className : MapIterator
        description : MapIterator
        objectId : <objectId>
        subtype : iterator
        type : object
    }
}
'new Map([['a', {b: 2}]]).values()', returnByValue: false, generatePreview: true
{
    result : {
        className : MapIterator
        description : MapIterator
        objectId : <objectId>
        preview : {
            description : MapIterator
            entries : [
                [0] : {
                    value : {
                        description : Object
                        overflow : false
                        properties : [
                            [0] : {
                                name : b
                                type : number
                                value : 2
                            }
                        ]
                        type : object
                    }
                }
            ]
            overflow : false
            properties : [
            ]
            subtype : iterator
            type : object
        }
        subtype : iterator
        type : object
    }
}
'it = new Map([['a', {b: 2}]]).values(); it.next(); it', returnByValue: false, generatePreview: true
{
    result : {
        className : MapIterator
        description : MapIterator
        objectId : <objectId>
        preview : {
            description : MapIterator
            overflow : false
            properties : [
            ]
            subtype : iterator
            type : object
        }
        subtype : iterator
        type : object
    }
}
'new Map([['a', {b: 2}]]).values()', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
        }
    }
}
'new Map([['a', {b: 2}]]).entries()', returnByValue: false, generatePreview: false
{
    result : {
        className : MapIterator
        description : MapIterator
        objectId : <objectId>
        subtype : iterator
        type : object
    }
}
'new Map([['a', {b: 2}]]).entries()', returnByValue: false, generatePreview: true
{
    result : {
        className : MapIterator
        description : MapIterator
        objectId : <objectId>
        preview : {
            description : MapIterator
            entries : [
                [0] : {
                    key : {
                        description : a
                        overflow : false
                        properties : [
                        ]
                        type : string
                    }
                    value : {
                        description : Object
                        overflow : false
                        properties : [
                            [0] : {
                                name : b
                                type : number
                                value : 2
                            }
                        ]
                        type : object
                    }
                }
            ]
            overflow : false
            properties : [
            ]
            subtype : iterator
            type : object
        }
        subtype : iterator
        type : object
    }
}
'it = new Map([['a', {b: 2}]]).entries(); it.next(); it', returnByValue: false, generatePreview: true
{
    result : {
        className : MapIterator
        description : MapIterator
        objectId : <objectId>
        preview : {
            description : MapIterator
            overflow : false
            properties : [
            ]
            subtype : iterator
            type : object
        }
        subtype : iterator
        type : object
    }
}
'new Map([['a', {b: 2}]]).entries()', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
        }
    }
}

Running test: testSet
'new Set([1])', returnByValue: false, generatePreview: true
{
    result : {
        className : Set
        description : Set(1)
        objectId : <objectId>
        preview : {
            description : Set(1)
            entries : [
                [0] : {
                    value : {
                        description : 1
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
            ]
            overflow : false
            properties : [
            ]
            subtype : set
            type : object
        }
        subtype : set
        type : object
    }
}
'new Set([1])', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
        }
    }
}
'new Set([1,2,3,4,5,6,7])', returnByValue: false, generatePreview: true
{
    result : {
        className : Set
        description : Set(7)
        objectId : <objectId>
        preview : {
            description : Set(7)
            entries : [
                [0] : {
                    value : {
                        description : 1
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
                [1] : {
                    value : {
                        description : 2
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
                [2] : {
                    value : {
                        description : 3
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
                [3] : {
                    value : {
                        description : 4
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
                [4] : {
                    value : {
                        description : 5
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
            ]
            overflow : true
            properties : [
            ]
            subtype : set
            type : object
        }
        subtype : set
        type : object
    }
}
'new Set([1,2,3]).values()', returnByValue: false, generatePreview: true
{
    result : {
        className : SetIterator
        description : SetIterator
        objectId : <objectId>
        preview : {
            description : SetIterator
            entries : [
                [0] : {
                    value : {
                        description : 1
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
                [1] : {
                    value : {
                        description : 2
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
                [2] : {
                    value : {
                        description : 3
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
            ]
            overflow : false
            properties : [
            ]
            subtype : iterator
            type : object
        }
        subtype : iterator
        type : object
    }
}
'it = new Set([1,2,3]).values(); it.next(); it', returnByValue: false, generatePreview: true
{
    result : {
        className : SetIterator
        description : SetIterator
        objectId : <objectId>
        preview : {
            description : SetIterator
            entries : [
                [0] : {
                    value : {
                        description : 2
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
                [1] : {
                    value : {
                        description : 3
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
            ]
            overflow : false
            properties : [
            ]
            subtype : iterator
            type : object
        }
        subtype : iterator
        type : object
    }
}

Running test: testWeakMap
'new WeakMap()', returnByValue: false, generatePreview: true
{
    result : {
        className : WeakMap
        description : WeakMap
        objectId : <objectId>
        preview : {
            description : WeakMap
            overflow : false
            properties : [
            ]
            subtype : weakmap
            type : object
        }
        subtype : weakmap
        type : object
    }
}
'new WeakMap([[this, 1]])', returnByValue: false, generatePreview: true
{
    result : {
        className : WeakMap
        description : WeakMap
        objectId : <objectId>
        preview : {
            description : WeakMap
            entries : [
                [0] : {
                    key : {
                        description : global
                        overflow : true
                        properties : [
                            [0] : {
                                name : setTimeout
                                type : function
                                value : 
                            }
                            [1] : {
                                name : inspector
                                type : object
                                value : Object
                            }
                            [2] : {
                                name : a
                                subtype : map
                                type : object
                                value : Map(1)
                            }
                            [3] : {
                                name : re
                                subtype : regexp
                                type : object
                                value : /w+/g
                            }
                            [4] : {
                                name : m
                                subtype : map
                                type : object
                                value : Map(1)
                            }
                        ]
                        type : object
                    }
                    value : {
                        description : 1
                        overflow : false
                        properties : [
                        ]
                        type : number
                    }
                }
            ]
            overflow : false
            properties : [
            ]
            subtype : weakmap
            type : object
        }
        subtype : weakmap
        type : object
    }
}

Running test: testWeakSet
'new WeakSet()', returnByValue: false, generatePreview: true
{
    result : {
        className : WeakSet
        description : WeakSet
        objectId : <objectId>
        preview : {
            description : WeakSet
            overflow : false
            properties : [
            ]
            subtype : weakset
            type : object
        }
        subtype : weakset
        type : object
    }
}
'new WeakSet([this])', returnByValue: false, generatePreview: true
{
    result : {
        className : WeakSet
        description : WeakSet
        objectId : <objectId>
        preview : {
            description : WeakSet
            entries : [
                [0] : {
                    value : {
                        description : global
                        overflow : true
                        properties : [
                            [0] : {
                                name : setTimeout
                                type : function
                                value : 
                            }
                            [1] : {
                                name : inspector
                                type : object
                                value : Object
                            }
                            [2] : {
                                name : a
                                subtype : map
                                type : object
                                value : Map(1)
                            }
                            [3] : {
                                name : re
                                subtype : regexp
                                type : object
                                value : /w+/g
                            }
                            [4] : {
                                name : m
                                subtype : map
                                type : object
                                value : Map(1)
                            }
                        ]
                        type : object
                    }
                }
            ]
            overflow : false
            properties : [
            ]
            subtype : weakset
            type : object
        }
        subtype : weakset
        type : object
    }
}

Running test: testGenerator
'g = (function*(){ yield 42; })(); g.a = 2; g', returnByValue: false, generatePreview: true
{
    result : {
        className : Generator
        description : Generator
        objectId : <objectId>
        preview : {
            description : Generator
            overflow : false
            properties : [
                [0] : {
                    name : [[GeneratorStatus]]
                    type : string
                    value : suspended
                }
                [1] : {
                    name : a
                    type : number
                    value : 2
                }
            ]
            subtype : generator
            type : object
        }
        subtype : generator
        type : object
    }
}

Running test: testError
'new Error()', returnByValue: false, generatePreview: false
{
    result : {
        className : Error
        description : Error     at <anonymous>:1:1
        objectId : <objectId>
        subtype : error
        type : object
    }
}
'new Error('abc')', returnByValue: false, generatePreview: false
{
    result : {
        className : Error
        description : Error: abc     at <anonymous>:1:1
        objectId : <objectId>
        subtype : error
        type : object
    }
}
'new Error('at\nat')', returnByValue: false, generatePreview: false
{
    result : {
        className : Error
        description : Error: at at     at <anonymous>:1:1
        objectId : <objectId>
        subtype : error
        type : object
    }
}
'new Error('preview')', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
        }
    }
}
'new Error('preview')', returnByValue: false, generatePreview: true
{
    result : {
        className : Error
        description : Error: preview     at <anonymous>:1:1
        objectId : <objectId>
        preview : {
            description : Error: preview     at <anonymous>:1:1
            overflow : false
            properties : [
                [0] : {
                    name : stack
                    type : string
                    value : Error: preview     at <anonymous>:1:1
                }
                [1] : {
                    name : message
                    type : string
                    value : preview
                }
            ]
            subtype : error
            type : object
        }
        subtype : error
        type : object
    }
}
'({a: new Error('preview')})', returnByValue: false, generatePreview: true
{
    result : {
        className : Object
        description : Object
        objectId : <objectId>
        preview : {
            description : Object
            overflow : false
            properties : [
                [0] : {
                    name : a
                    subtype : error
                    type : object
                    value : Error: preview     at <anonymous>:1:6
                }
            ]
            type : object
        }
        type : object
    }
}
'a = new Error('preview and a'); a.a = 123; a', returnByValue: false, generatePreview: true
{
    result : {
        className : Error
        description : Error: preview and a     at <anonymous>:1:5
        objectId : <objectId>
        preview : {
            description : Error: preview and a     at <anonymous>:1:5
            overflow : false
            properties : [
                [0] : {
                    name : a
                    type : number
                    value : 123
                }
                [1] : {
                    name : stack
                    type : string
                    value : Error: preview and a     at <anonymous>:1:5
                }
                [2] : {
                    name : message
                    type : string
                    value : preview and a
                }
            ]
            subtype : error
            type : object
        }
        subtype : error
        type : object
    }
}
'a = new Error('preview and a'); a.a = 123; a', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
            a : 123
        }
    }
}

Running test: testCustomError
'class CustomError extends Error {}; a = new CustomError(); delete a.stack; a', returnByValue: false, generatePreview: false
{
    result : {
        className : CustomError
        description : CustomError
        objectId : <objectId>
        subtype : error
        type : object
    }
}

Running test: testProxy
'new Proxy({}, {})', returnByValue: false, generatePreview: false
{
    result : {
        className : Object
        description : Proxy
        objectId : <objectId>
        subtype : proxy
        type : object
    }
}
'new Proxy(new Error(), {})', returnByValue: false, generatePreview: false
{
    result : {
        className : Object
        description : Proxy
        objectId : <objectId>
        subtype : proxy
        type : object
    }
}
'new Proxy({c: 3}, {d: 4})', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
        }
    }
}
'new Proxy({a: 1}, {b: 2})', returnByValue: false, generatePreview: true
{
    result : {
        className : Object
        description : Proxy
        objectId : <objectId>
        preview : {
            description : Proxy
            overflow : false
            properties : [
                [0] : {
                    name : a
                    type : number
                    value : 1
                }
            ]
            subtype : proxy
            type : object
        }
        subtype : proxy
        type : object
    }
}
'({e: new Proxy({a: 1}, {b: 2})})', returnByValue: false, generatePreview: true
{
    result : {
        className : Object
        description : Object
        objectId : <objectId>
        preview : {
            description : Object
            overflow : false
            properties : [
                [0] : {
                    name : e
                    subtype : proxy
                    type : object
                    value : Proxy
                }
            ]
            type : object
        }
        type : object
    }
}

Running test: testPromise
'Promise.resolve(42)', returnByValue: false, generatePreview: false
{
    result : {
        className : Promise
        description : Promise
        objectId : <objectId>
        subtype : promise
        type : object
    }
}
'Promise.reject(42)', returnByValue: false, generatePreview: false
{
    result : {
        className : Promise
        description : Promise
        objectId : <objectId>
        subtype : promise
        type : object
    }
}
'(async function(){})()', returnByValue: false, generatePreview: false
{
    result : {
        className : Promise
        description : Promise
        objectId : <objectId>
        subtype : promise
        type : object
    }
}
'Promise.resolve('a'.repeat(101))', returnByValue: false, generatePreview: true
{
    result : {
        className : Promise
        description : Promise
        objectId : <objectId>
        preview : {
            description : Promise
            overflow : false
            properties : [
                [0] : {
                    name : [[PromiseStatus]]
                    type : string
                    value : resolved
                }
                [1] : {
                    name : [[PromiseValue]]
                    type : string
                    value : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa…aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                }
            ]
            subtype : promise
            type : object
        }
        subtype : promise
        type : object
    }
}
'Promise.reject(42)', returnByValue: false, generatePreview: true
{
    result : {
        className : Promise
        description : Promise
        objectId : <objectId>
        preview : {
            description : Promise
            overflow : false
            properties : [
                [0] : {
                    name : [[PromiseStatus]]
                    type : string
                    value : rejected
                }
                [1] : {
                    name : [[PromiseValue]]
                    type : number
                    value : 42
                }
            ]
            subtype : promise
            type : object
        }
        subtype : promise
        type : object
    }
}
'new Promise(resolve => this.resolve = resolve)', returnByValue: false, generatePreview: true
{
    result : {
        className : Promise
        description : Promise
        objectId : <objectId>
        preview : {
            description : Promise
            overflow : false
            properties : [
                [0] : {
                    name : [[PromiseStatus]]
                    type : string
                    value : pending
                }
                [1] : {
                    name : [[PromiseValue]]
                    type : undefined
                    value : undefined
                }
            ]
            subtype : promise
            type : object
        }
        subtype : promise
        type : object
    }
}
'a = Promise.resolve(42); a.b = 2; a', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
            b : 2
        }
    }
}
'({a: Promise.resolve(42)})', returnByValue: false, generatePreview: true
{
    result : {
        className : Object
        description : Object
        objectId : <objectId>
        preview : {
            description : Object
            overflow : false
            properties : [
                [0] : {
                    name : a
                    subtype : promise
                    type : object
                    value : Promise
                }
            ]
            type : object
        }
        type : object
    }
}

Running test: testTypedArray
'a = new Uint8Array(2); a.b = 2; a', returnByValue: false, generatePreview: true
{
    result : {
        className : Uint8Array
        description : Uint8Array(2)
        objectId : <objectId>
        preview : {
            description : Uint8Array(2)
            overflow : false
            properties : [
                [0] : {
                    name : 0
                    type : number
                    value : 0
                }
                [1] : {
                    name : 1
                    type : number
                    value : 0
                }
                [2] : {
                    name : b
                    type : number
                    value : 2
                }
            ]
            subtype : typedarray
            type : object
        }
        subtype : typedarray
        type : object
    }
}
'new Int32Array(101)', returnByValue: false, generatePreview: true
{
    result : {
        className : Int32Array
        description : Int32Array(101)
        objectId : <objectId>
        preview : {
            description : Int32Array(101)
            overflow : true
            properties : [
                [0] : {
                    name : 0
                    type : number
                    value : 0
                }
                [1] : {
                    name : 1
                    type : number
                    value : 0
                }
                [2] : {
                    name : 2
                    type : number
                    value : 0
                }
                [3] : {
                    name : 3
                    type : number
                    value : 0
                }
                [4] : {
                    name : 4
                    type : number
                    value : 0
                }
                [5] : {
                    name : 5
                    type : number
                    value : 0
                }
                [6] : {
                    name : 6
                    type : number
                    value : 0
                }
                [7] : {
                    name : 7
                    type : number
                    value : 0
                }
                [8] : {
                    name : 8
                    type : number
                    value : 0
                }
                [9] : {
                    name : 9
                    type : number
                    value : 0
                }
                [10] : {
                    name : 10
                    type : number
                    value : 0
                }
                [11] : {
                    name : 11
                    type : number
                    value : 0
                }
                [12] : {
                    name : 12
                    type : number
                    value : 0
                }
                [13] : {
                    name : 13
                    type : number
                    value : 0
                }
                [14] : {
                    name : 14
                    type : number
                    value : 0
                }
                [15] : {
                    name : 15
                    type : number
                    value : 0
                }
                [16] : {
                    name : 16
                    type : number
                    value : 0
                }
                [17] : {
                    name : 17
                    type : number
                    value : 0
                }
                [18] : {
                    name : 18
                    type : number
                    value : 0
                }
                [19] : {
                    name : 19
                    type : number
                    value : 0
                }
                [20] : {
                    name : 20
                    type : number
                    value : 0
                }
                [21] : {
                    name : 21
                    type : number
                    value : 0
                }
                [22] : {
                    name : 22
                    type : number
                    value : 0
                }
                [23] : {
                    name : 23
                    type : number
                    value : 0
                }
                [24] : {
                    name : 24
                    type : number
                    value : 0
                }
                [25] : {
                    name : 25
                    type : number
                    value : 0
                }
                [26] : {
                    name : 26
                    type : number
                    value : 0
                }
                [27] : {
                    name : 27
                    type : number
                    value : 0
                }
                [28] : {
                    name : 28
                    type : number
                    value : 0
                }
                [29] : {
                    name : 29
                    type : number
                    value : 0
                }
                [30] : {
                    name : 30
                    type : number
                    value : 0
                }
                [31] : {
                    name : 31
                    type : number
                    value : 0
                }
                [32] : {
                    name : 32
                    type : number
                    value : 0
                }
                [33] : {
                    name : 33
                    type : number
                    value : 0
                }
                [34] : {
                    name : 34
                    type : number
                    value : 0
                }
                [35] : {
                    name : 35
                    type : number
                    value : 0
                }
                [36] : {
                    name : 36
                    type : number
                    value : 0
                }
                [37] : {
                    name : 37
                    type : number
                    value : 0
                }
                [38] : {
                    name : 38
                    type : number
                    value : 0
                }
                [39] : {
                    name : 39
                    type : number
                    value : 0
                }
                [40] : {
                    name : 40
                    type : number
                    value : 0
                }
                [41] : {
                    name : 41
                    type : number
                    value : 0
                }
                [42] : {
                    name : 42
                    type : number
                    value : 0
                }
                [43] : {
                    name : 43
                    type : number
                    value : 0
                }
                [44] : {
                    name : 44
                    type : number
                    value : 0
                }
                [45] : {
                    name : 45
                    type : number
                    value : 0
                }
                [46] : {
                    name : 46
                    type : number
                    value : 0
                }
                [47] : {
                    name : 47
                    type : number
                    value : 0
                }
                [48] : {
                    name : 48
                    type : number
                    value : 0
                }
                [49] : {
                    name : 49
                    type : number
                    value : 0
                }
                [50] : {
                    name : 50
                    type : number
                    value : 0
                }
                [51] : {
                    name : 51
                    type : number
                    value : 0
                }
                [52] : {
                    name : 52
                    type : number
                    value : 0
                }
                [53] : {
                    name : 53
                    type : number
                    value : 0
                }
                [54] : {
                    name : 54
                    type : number
                    value : 0
                }
                [55] : {
                    name : 55
                    type : number
                    value : 0
                }
                [56] : {
                    name : 56
                    type : number
                    value : 0
                }
                [57] : {
                    name : 57
                    type : number
                    value : 0
                }
                [58] : {
                    name : 58
                    type : number
                    value : 0
                }
                [59] : {
                    name : 59
                    type : number
                    value : 0
                }
                [60] : {
                    name : 60
                    type : number
                    value : 0
                }
                [61] : {
                    name : 61
                    type : number
                    value : 0
                }
                [62] : {
                    name : 62
                    type : number
                    value : 0
                }
                [63] : {
                    name : 63
                    type : number
                    value : 0
                }
                [64] : {
                    name : 64
                    type : number
                    value : 0
                }
                [65] : {
                    name : 65
                    type : number
                    value : 0
                }
                [66] : {
                    name : 66
                    type : number
                    value : 0
                }
                [67] : {
                    name : 67
                    type : number
                    value : 0
                }
                [68] : {
                    name : 68
                    type : number
                    value : 0
                }
                [69] : {
                    name : 69
                    type : number
                    value : 0
                }
                [70] : {
                    name : 70
                    type : number
                    value : 0
                }
                [71] : {
                    name : 71
                    type : number
                    value : 0
                }
                [72] : {
                    name : 72
                    type : number
                    value : 0
                }
                [73] : {
                    name : 73
                    type : number
                    value : 0
                }
                [74] : {
                    name : 74
                    type : number
                    value : 0
                }
                [75] : {
                    name : 75
                    type : number
                    value : 0
                }
                [76] : {
                    name : 76
                    type : number
                    value : 0
                }
                [77] : {
                    name : 77
                    type : number
                    value : 0
                }
                [78] : {
                    name : 78
                    type : number
                    value : 0
                }
                [79] : {
                    name : 79
                    type : number
                    value : 0
                }
                [80] : {
                    name : 80
                    type : number
                    value : 0
                }
                [81] : {
                    name : 81
                    type : number
                    value : 0
                }
                [82] : {
                    name : 82
                    type : number
                    value : 0
                }
                [83] : {
                    name : 83
                    type : number
                    value : 0
                }
                [84] : {
                    name : 84
                    type : number
                    value : 0
                }
                [85] : {
                    name : 85
                    type : number
                    value : 0
                }
                [86] : {
                    name : 86
                    type : number
                    value : 0
                }
                [87] : {
                    name : 87
                    type : number
                    value : 0
                }
                [88] : {
                    name : 88
                    type : number
                    value : 0
                }
                [89] : {
                    name : 89
                    type : number
                    value : 0
                }
                [90] : {
                    name : 90
                    type : number
                    value : 0
                }
                [91] : {
                    name : 91
                    type : number
                    value : 0
                }
                [92] : {
                    name : 92
                    type : number
                    value : 0
                }
                [93] : {
                    name : 93
                    type : number
                    value : 0
                }
                [94] : {
                    name : 94
                    type : number
                    value : 0
                }
                [95] : {
                    name : 95
                    type : number
                    value : 0
                }
                [96] : {
                    name : 96
                    type : number
                    value : 0
                }
                [97] : {
                    name : 97
                    type : number
                    value : 0
                }
                [98] : {
                    name : 98
                    type : number
                    value : 0
                }
                [99] : {
                    name : 99
                    type : number
                    value : 0
                }
            ]
            subtype : typedarray
            type : object
        }
        subtype : typedarray
        type : object
    }
}

Running test: testArrayBuffer
'new Uint8Array().buffer', returnByValue: false, generatePreview: true
{
    result : {
        className : ArrayBuffer
        description : ArrayBuffer(0)
        objectId : <objectId>
        preview : {
            description : ArrayBuffer(0)
            overflow : false
            properties : [
            ]
            subtype : arraybuffer
            type : object
        }
        subtype : arraybuffer
        type : object
    }
}
'new Int32Array(100).buffer', returnByValue: false, generatePreview: true
{
    result : {
        className : ArrayBuffer
        description : ArrayBuffer(400)
        objectId : <objectId>
        preview : {
            description : ArrayBuffer(400)
            overflow : false
            properties : [
            ]
            subtype : arraybuffer
            type : object
        }
        subtype : arraybuffer
        type : object
    }
}

Running test: testDataView
'new DataView(new ArrayBuffer(16))', returnByValue: false, generatePreview: true
{
    result : {
        className : DataView
        description : DataView(16)
        objectId : <objectId>
        preview : {
            description : DataView(16)
            overflow : false
            properties : [
            ]
            subtype : dataview
            type : object
        }
        subtype : dataview
        type : object
    }
}
'new DataView(new ArrayBuffer(16), 12, 4)', returnByValue: false, generatePreview: true
{
    result : {
        className : DataView
        description : DataView(4)
        objectId : <objectId>
        preview : {
            description : DataView(4)
            overflow : false
            properties : [
            ]
            subtype : dataview
            type : object
        }
        subtype : dataview
        type : object
    }
}

Running test: testArray
'[]', returnByValue: false, generatePreview: false
{
    result : {
        className : Array
        description : Array(0)
        objectId : <objectId>
        subtype : array
        type : object
    }
}
'[1,2,3]', returnByValue: false, generatePreview: false
{
    result : {
        className : Array
        description : Array(3)
        objectId : <objectId>
        subtype : array
        type : object
    }
}

Running test: testArrayLike
'({length: 5, splice: () => []})', returnByValue: false, generatePreview: false
{
    result : {
        className : Object
        description : Object(5)
        objectId : <objectId>
        subtype : array
        type : object
    }
}
'new (class Foo{constructor() {
        this.length = 5;
        this.splice = () => [];
      }})', returnByValue: false, generatePreview: false
{
    result : {
        className : Foo
        description : Foo(5)
        objectId : <objectId>
        subtype : array
        type : object
    }
}
'({length: -5, splice: () => []})', returnByValue: false, generatePreview: false
{
    result : {
        className : Object
        description : Object
        objectId : <objectId>
        type : object
    }
}

Running test: testOtherObjects
'({a: 1, b:2})', returnByValue: false, generatePreview: false
{
    result : {
        className : Object
        description : Object
        objectId : <objectId>
        type : object
    }
}
'({a: 1, b:2})', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
            a : 1
            b : 2
        }
    }
}
'({a: 1, b:2})', returnByValue: false, generatePreview: true
{
    result : {
        className : Object
        description : Object
        objectId : <objectId>
        preview : {
            description : Object
            overflow : false
            properties : [
                [0] : {
                    name : a
                    type : number
                    value : 1
                }
                [1] : {
                    name : b
                    type : number
                    value : 2
                }
            ]
            type : object
        }
        type : object
    }
}
'new (function Foo() { this.a = 5; })', returnByValue: false, generatePreview: false
{
    result : {
        className : Foo
        description : Foo
        objectId : <objectId>
        type : object
    }
}
'new (function Foo() { this.a = [1,2,3]; })', returnByValue: true, generatePreview: false
{
    result : {
        type : object
        value : {
            a : [
                [0] : 1
                [1] : 2
                [2] : 3
            ]
        }
    }
}
'new (class Bar {})', returnByValue: false, generatePreview: false
{
    result : {
        className : Bar
        description : Bar
        objectId : <objectId>
        type : object
    }
}
'inspector.createObjectWithAccessor('title', true)', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : title
                        type : accessor
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'inspector.createObjectWithAccessor('title', false)', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : title
                        type : accessor
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'inspector.createObjectWithAccessor('title', true)', returnByValue: true, generatePreview: false
{
    error : {
        code : -32603
        message : Internal error
    }
    id : <messageId>
}
'({get a() { return 42; }})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a
                        type : accessor
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({set a(v) {}})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                ]
                type : object
            }
            type : object
        }
    }
}
'({a: () => 42})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a
                        type : function
                        value : 
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a: null})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a
                        subtype : null
                        type : object
                        value : null
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a: true})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a
                        type : boolean
                        value : true
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a1: -Infinity, a2: +Infinity, a3: -0, a4: NaN, a5: 1.23})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a1
                        type : number
                        value : -Infinity
                    }
                    [1] : {
                        name : a2
                        type : number
                        value : Infinity
                    }
                    [2] : {
                        name : a3
                        type : number
                        value : -0
                    }
                    [3] : {
                        name : a4
                        type : number
                        value : NaN
                    }
                    [4] : {
                        name : a5
                        type : number
                        value : 1.23
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a1: 1234567890123456789012345678901234567890n})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a1
                        type : bigint
                        value : 1234567890123456789012345678901234567890n
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a1: Symbol(42)})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a1
                        type : symbol
                        value : Symbol(42)
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a1: /abc/i})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a1
                        subtype : regexp
                        type : object
                        value : /abc/i
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a1: () => 42, a2: async () => 42})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a1
                        type : function
                        value : 
                    }
                    [1] : {
                        name : a2
                        type : function
                        value : 
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a1: ({}), a2: new (class Bar{})})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a1
                        type : object
                        value : Object
                    }
                    [1] : {
                        name : a2
                        type : object
                        value : Bar
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a1: 'a'.repeat(100), a2: 'a'.repeat(101)})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a1
                        type : string
                        value : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                    }
                    [1] : {
                        name : a2
                        type : string
                        value : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa…aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'({a1: 1, a2: 2, a3: 3, a4:4, a5:5, a6: 6})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : true
                properties : [
                    [0] : {
                        name : a1
                        type : number
                        value : 1
                    }
                    [1] : {
                        name : a2
                        type : number
                        value : 2
                    }
                    [2] : {
                        name : a3
                        type : number
                        value : 3
                    }
                    [3] : {
                        name : a4
                        type : number
                        value : 4
                    }
                    [4] : {
                        name : a5
                        type : number
                        value : 5
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
'([1,2,3])', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Array
            description : Array(3)
            objectId : <objectId>
            preview : {
                description : Array(3)
                overflow : false
                properties : [
                    [0] : {
                        name : 0
                        type : number
                        value : 1
                    }
                    [1] : {
                        name : 1
                        type : number
                        value : 2
                    }
                    [2] : {
                        name : 2
                        type : number
                        value : 3
                    }
                ]
                subtype : array
                type : object
            }
            subtype : array
            type : object
        }
    }
}

Running test: testArray2
'([1,2,3])', returnByValue: false, generatePreview: false
{
    id : <messageId>
    result : {
        result : {
            className : Array
            description : Array(3)
            objectId : <objectId>
            subtype : array
            type : object
        }
    }
}
'([1,2,3])', returnByValue: true, generatePreview: false
{
    id : <messageId>
    result : {
        result : {
            type : object
            value : [
                [0] : 1
                [1] : 2
                [2] : 3
            ]
        }
    }
}
'([1,2,3])', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Array
            description : Array(3)
            objectId : <objectId>
            preview : {
                description : Array(3)
                overflow : false
                properties : [
                    [0] : {
                        name : 0
                        type : number
                        value : 1
                    }
                    [1] : {
                        name : 1
                        type : number
                        value : 2
                    }
                    [2] : {
                        name : 2
                        type : number
                        value : 3
                    }
                ]
                subtype : array
                type : object
            }
            subtype : array
            type : object
        }
    }
}
'({a: [1,2,3]})', returnByValue: false, generatePreview: true
{
    id : <messageId>
    result : {
        result : {
            className : Object
            description : Object
            objectId : <objectId>
            preview : {
                description : Object
                overflow : false
                properties : [
                    [0] : {
                        name : a
                        subtype : array
                        type : object
                        value : Array(3)
                    }
                ]
                type : object
            }
            type : object
        }
    }
}
