@Override
    public void mark(final int readlimit) {
        abortIfNeeded();
        if (hasBeenAccessed) {
            throw new UnsupportedOperationException(
                    "Marking is only supported before your first call to "
                            + "read or skip.");
        }
        in.mark(readlimit);
    }
Mark and reset is currently only partially supported, in the sense that,
if the underlying input stream supports mark-and-reset, this input stream
can then be marked at and get reset back to the very beginning of the
stream (but not anywhere else).

@throws UnsupportedOperationException
            if mark is called after this stream has been accessed.
aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/internal/crypto/RenewableCipherLiteInputStream.java