docs: @Override
      public Object get(int index, Scriptable start) {
          while (index >= list.size()) {
              list.add(null);
          }
          Object result = list.get(index);
          if (result != null)
              return result;
          if (dim > 2) {
              Matrix m = new Matrix(dim-1);
              m.setParentScope(getParentScope());
              m.setPrototype(getPrototype());
              result = m;
          } else {
              Context cx = Context.getCurrentContext();
              Scriptable scope = ScriptableObject.getTopLevelScope(start);
              result = cx.newArray(scope, 0);
          }
          list.set(index, result);
          return result;
      }