code: @Nullable
    private TtlBucket getBucketContaining(InodeView inode) {
      if (inode.getTtl() == Constants.NO_TTL) {
        // no bucket will contain a inode with NO_TTL.
        return null;
      }
  
      long ttlEndTimeMs = inode.getCreationTimeMs() + inode.getTtl();
      // Gets the last bucket with interval start time less than or equal to the inode's life end
      // time.
      TtlBucket bucket = mBucketList.floor(new TtlBucket(ttlEndTimeMs));
      if (bucket == null || bucket.getTtlIntervalEndTimeMs() < ttlEndTimeMs
          || (bucket.getTtlIntervalEndTimeMs() == ttlEndTimeMs
              && TtlBucket.getTtlIntervalMs() != 0)) {
        // 1. There is no bucket in the list, or
        // 2. All buckets' interval start time is larger than the inode's life end time, or
        // 3. No bucket actually contains ttlEndTimeMs in its interval.
        return null;
      }
  
      return bucket;
    }
docs: Gets the bucket in the list that contains the inode.
  
  @param inode the inode to be contained
  @return the bucket containing the inode, or null if no such bucket exists