code: protected void validateEmailAddress(final List<Diagnostic> diags) {
  		if (!isEmpty()) {
  			String value = getValueAsString();
  			String errorMessage = getComponentModel().errorMessage;
  
  			// Email Pattern
  			if (!Pattern.matches(
  					"^(?:\".+\"|[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+)@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)+$",
  					value)) {
  				diags.add(createErrorDiagnostic(errorMessage, this));
  			}
  
  			// Maximum Length
  			int max = getMaxLength();
  			if (max > 0 && value.length() > max) {
  				diags.add(
  						createErrorDiagnostic(InternalMessages.DEFAULT_VALIDATION_ERROR_MAX_LENGTH,
  								this,
  								String.valueOf(max)));
  			}
  		}
  	}
docs: <p>
  Performs validation of the email address. This only performs very basic validation - an email address must
  contain some text, followed by an '@', and then something which resembles a domain/host name.
  </p>
  <p>
  Subclasses can override this method to perform more specific validation.
  </p>
  
  @param diags the list into which any validation diagnostics are added.