code: public void setExternalArrayData(ExternalArrayData array)
      {
          externalData = array;
  
          if (array == null) {
              delete("length");
          } else {
              // Define "length" to return whatever length the List gives us.
              defineProperty("length", null,
                             GET_ARRAY_LENGTH, null, READONLY | DONTENUM);
          }
      }
docs: Attach the specified object to this object, and delegate all indexed property lookups to it. In other words,
  if the object has 3 elements, then an attempt to look up or modify "[0]", "[1]", or "[2]" will be delegated
  to this object. Additional indexed properties outside the range specified, and additional non-indexed
  properties, may still be added. The object specified must implement the ExternalArrayData interface.
  
  @param array the List to use for delegated property access. Set this to null to revert back to regular
  property access.
  @since 1.7.6