use Precondition.checkState