optional
Preconditions