> It could be a convention to silently ignore it, but I think in most cases this would indicate a bug in the application.

If we add goog.asserts.fail() then I should change the documentation of the removeControl function. Because right now the doc says that undefined is returned if the control is not the map, which suggests that it's not an abnormal case.

> ```
> // remove control if has not already been removed
> if (control.getMap()) {
>  map.removeControl(control);
> }
> ```

Note that getMap returning undefined doesn't necessarily mean that the control is not in the map. We can get out of sync if the application developer uses setMap directly.

```
map.addControl(control);
control.setMap(null);  # that doesn't remove the control from the map
if (control.getMap()) {
  map.removeControl(control);
}
```

Most users should just use addControl and removeControl. Advanced users who know what they're doing can use setMap directly.