code: private boolean validate(final String realName, final String address, final Problems problems, final String compName) {
  		final String[] nameAndHost = address.split("@");
  		if (nameAndHost.length == 1 && nameAndHost[0].contains("@")) {
  			problems.add(ValidationBundle.getMessage(EmailAddressValidator.class, "EMAIL_MISSING_HOST", compName, nameAndHost[0]));
  			return false;
  		}
  		if (nameAndHost.length > 2) {
  			problems.add(ValidationBundle.getMessage(EmailAddressValidator.class, "EMAIL_HAS_>1_@", compName, address));
  			return false;
  		}
  		final String name = nameAndHost[0];
  		if (name.length() == 0) {
  			problems.add(ValidationBundle.getMessage(EmailAddressValidator.class, "EMAIL_MISSING_NAME", compName, name));
  			return false;
  		}
  		if (name.length() > 64) {
  			problems.add(new Problem(ValidationBundle.getMessage(EmailAddressValidator.class, "ADDRESS_MAY_BE_TOO_LONG", compName, name),
  					Severity.WARNING));
  		}
  		final String host = nameAndHost.length >= 2 ? nameAndHost[1] : null;
  		boolean result = host != null;
  		if (result) {
  			result = this.hv.validate(problems, compName, host);
  			if (result) {
  				final MayNotContainSpacesValidator v = new MayNotContainSpacesValidator();
  				result = v.validate(problems, compName, name);
  			}
  			final Validator<String> v = new EncodableInCharsetValidator("US-ASCII");
  			if (result) {
  				result = v.validate(problems, compName, address);
  			}
  		} else {
  			problems.add(ValidationBundle.getMessage(EmailAddressValidator.class, "EMAIL_MISSING_HOST", compName, nameAndHost[0]));
  		}
  		return result;
  	}
docs: Validate.
  
  @param realName the real name
  @param address  the address
  @param problems the problems
  @param compName the comp name
  @return true, if successful