abstract cachedbuffer