class Conditions {

  @NonNull
  public static Condition not(@NonNull final Condition condition) {
    if (condition instanceof NegatedCondition) {
      return ((NegatedCondition) condition).condition;
    }
    if (condition == TRUE_CONDICATE) {
      return FALSE_CONDICATE;
    }
    if (condition == FALSE_CONDICATE) {
      return TRUE_CONDICATE;
    }
    return new NegatedCondition(condition);
  }

  private  Conditions();

}