@benleggiero Let's say an object has some hidden state, ie. it doesn't expose a getter and setter for one of its fields. Then I could just come along and write an extention function to read and modify that previously hidden state. See how this doesn't work in practice?