code: @Override
      public String getString(int index) {
          synchronized (lock) {
              final Object obj = getMValue(internalArray, index).asNative(internalArray);
              return obj instanceof String ? (String) obj : null;
          }
      }
docs: Gets value at the given index as a String. Returns null if the value doesn't exist, or its value is not a String.
  
  @param index the index. This value must not exceed the bounds of the array.
  @return the String or null.