private static Rule<View> getEmailRule(Field field, View view, Email email) {
    if (!TextView.class.isAssignableFrom(view.getClass())) {
      Log.w(TAG, String.format(WARN_TEXT, field.getName(), Regex.class.getSimpleName()));
      return null;
    }
    //		int messageResId = email.messageResId();
    //		String message = messageResId != 0 ? view.getContext().getString(messageResId) :
    // email.message();
    //		return Rules.or(message, Rules.eq(null, Rules.EMPTY_STRING), Rules.regex(message,
    // Rules.REGEX_EMAIL, true));

    int messageResId = email.messageResId();
    String message =
        messageResId != 0 ? view.getContext().getString(messageResId) : email.message();

    if (email.empty()) {
      return Rules.or(
          message,
          Rules.eq(null, Rules.EMPTY_STRING),
          Rules.regex(message, Rules.REGEX_EMAIL, true));
    }
    List<Rule<?>> rules = new ArrayList<Rule<?>>();
    rules.add(Rules.required(message, true));
    rules.add(Rules.regex(message, Rules.REGEX_EMAIL, true));
    Rule<?>[] ruleArray = new Rule<?>[rules.size()];
    rules.toArray(ruleArray);
    return Rules.and(message, ruleArray);
  }
  private static Rule<View> getIpAddressRule(Field field, View view, IpAddress ipAddress) {
    if (!TextView.class.isAssignableFrom(view.getClass())) {
      Log.w(TAG, String.format(WARN_TEXT, field.getName(), IpAddress.class.getSimpleName()));
      return null;
    }

    int messageResId = ipAddress.messageResId();
    String message =
        messageResId != 0 ? view.getContext().getString(messageResId) : ipAddress.message();

    return Rules.or(
        message,
        Rules.eq(null, Rules.EMPTY_STRING),
        Rules.regex(message, Rules.REGEX_IP_ADDRESS, true));
  }