public @Nullable Data dataIfExists() throws NoSuchElementException {
      if (!hasData) {
        throw new NoSuchElementException("Data doesn't exist");
      }
      return data;
    }
public @Nullable Data dataIfExists()