Dynamic readonly

Let `readonly` be a function `Range → Boolean` that locks a range when it returns true