Lifted 'free_in' so it returns a Protected<bool> instead of a bool.
Changed any call sites for 'free_in' to pipe the result into Choice.get; later, these should be modified to correctly propagate errors.