@Override
  public boolean equals(Object o) {
    if (o instanceof RandomAccess && o instanceof List) {
      List<?> other = (List<?>)o;
      if (size() != other.size()) {
        return false;
      }

      for (int i = 0; i < other.size(); i++) {
        Object o1 = other.get(i);
        Object o2 = get(i);
        if (!Objects.equals(o1, o2)) {
          return false;
        }
      }

      return true;
    }

    return super.equals(o);
  }
@Override
  public boolean equals(Object o)