Source::update takes mutable self