That's a good point. Using lockPointers would be a good way to enforce at runtime that your ArrayList is truly read-only.