Sure, in my mind that's equally good. I think having an internal, protected string field is fine to use for equality. Even if `asFilename` just returns this field I'd prefer it to be isolated from the notion of a file.

We should just make sure that users of this class never compare two blocks using `x.asFilename == y.asFilename` and rather use `x.equals(y)`, otherwise we can't change the equality scheme down the road without more re-factoring.