docs: public static BaseFunction typeErrorThrower(Context cx) {
        if (cx.typeErrorThrower == null) {
          BaseFunction thrower = new BaseFunction() {
              private static final long serialVersionUID = -5891740962154902286L;
  
            @Override
            public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
              throw typeError0("msg.op.not.allowed");
            }
            @Override
            public int getLength() {
              return 0;
            }
          };
          ScriptRuntime.setFunctionProtoAndParent(thrower, cx.topCallScope);
          thrower.preventExtensions();
          cx.typeErrorThrower = thrower;
        }
        return cx.typeErrorThrower;
      }