In this statement, for readability, I'd put all the return values on separate lines instead of doing it only for ones that are too long:
```
    case RDD(rddId, splitIndex) =>
      RDDBlockId(rddId.toInt, splitIndex.toInt)
    case Shuffle(shuffleId, mapId, reduceId) =>
      ShuffleBlockId(shuffleId.toInt, mapId.toInt, reduceId.toInt)
    case Broadcast(broadcastId) =>
      BroadcastBlockId(broadcastId.toLong)
    case TaskResult(taskId) =>
      TaskResultBlockId(taskId.toLong)
    ...
```