this looks great. I think we should throw UnsupportedOperationException on the methods that are not correct if they are called? 
I also think we should rather use a struct to hold both the `ttf` and the `docFreq` - it seems hard to understand what is returned at this point . Other than than I think we are ready to go ie. you can squash and we push it in!