docs: @Override
      public void put(int index, Scriptable start, Object value)
      {
          if (externalData != null) {
              if (index < externalData.getArrayLength()) {
                  externalData.setArrayElement(index, value);
              } else {
                  throw new JavaScriptException(
                      ScriptRuntime.newNativeError(Context.getCurrentContext(), this,
                                                   TopLevel.NativeErrors.RangeError,
                                                   new Object[] { "External array index out of bounds " }),
                      null, 0);
              }
              return;
          }
  
          if (putImpl(null, index, start, value))
              return;
  
          if (start == this) throw Kit.codeBug();
          start.put(index, start, value);
      }