The key takeaway is mutability of receivers and the rules that come with it. It might be a repetition of borrow checker rules, but it is important to know they apply to `self` as to any other variable or argument.
It’s entirely possible that a method gives ownership of self to another object, or return `self`.
For example
```
fn id(self) -> Self {
return self;
}
```
or more realistically
```
fn or(self, other) -> Self {
if (self.isValid()) { return self;}
return other;
}
```