code: @SuppressWarnings("unused") // Public API
      public static ViewPosition unpack(String str) {
          String[] parts = TextUtils.split(str, SPLIT_PATTERN);
          if (parts.length != 4) {
              throw new IllegalArgumentException("Wrong ViewPosition string: " + str);
          }
  
          Rect view = Rect.unflattenFromString(parts[0]);
          Rect viewport = Rect.unflattenFromString(parts[1]);
          Rect visible = Rect.unflattenFromString(parts[2]);
          Rect image = Rect.unflattenFromString(parts[3]);
  
          if (view == null || viewport == null || image == null) {
              throw new IllegalArgumentException("Wrong ViewPosition string: " + str);
          }
  
          return new ViewPosition(view, viewport, visible, image);
      }
docs: Restores ViewPosition from the string created by {@link #pack()} method.
  
  @param str Serialized position string
  @return De-serialized position