Implement selectors

Should be `!this.requiresLocation || location != null`.

Also, Preconditions should be statically imported.