Base tables: IsReadOnly vs IsWritable vs IsDefinitelyWriteable

When working with Base Table Controls (Grids) I’m trying to understand how these three properties compare.

oEvent.Source.Model.getRowSet().Columns.getByName("foo").IsReadOnly()

oEvent.Source.Model.getRowSet().Columns.getByName("foo").IsWritable()

oEvent.Source.Model.getRowSet().Columns.getByName("foo").IsDefinitelyWriteable()