internal static ScriptValue Construct([NotNull] ScriptObject constructor, [NotNull] IReadOnlyList <ScriptValue> argumentList, ScriptObject newTarget = null)
        {
            //https://tc39.github.io/ecma262/#sec-construct

            if (newTarget == null)
            {
                newTarget = constructor;
            }

            Debug.Assert(IsConstructor(constructor));
            Debug.Assert(IsConstructor(newTarget));
            return(constructor.Construct(argumentList, newTarget));
        }