code: @Override
  	public void validate(final List<Diagnostic> diags) {
  		// Don't validate if it's invisible.
  		if (!isVisible()) {
  			return;
  		}
  
  		// Also check the validation override flag.
  		if (!isValidate()) {
  			return;
  		}
  
  		// Also don't validate if it's disabled.
  		if (this instanceof Disableable) {
  			Disableable dis = (Disableable) this;
  
  			if (dis.isDisabled()) {
  				return;
  			}
  		}
  
  		// Also don't validate if it's readonly.
  		if (this instanceof Input) {
  			Input input = (Input) this;
  
  			if (input.isReadOnly()) {
  				return;
  			}
  		}
  
  		// Validate this component.
  		validateComponent(diags);
  
  		// Validate children
  		List<WComponent> children = getComponentModel().getChildren();
  
  		if (children != null) {
  			final int size = children.size();
  
  			for (int i = 0; i < size; i++) {
  				children.get(i).validate(diags);
  			}
  		}
  	}
docs: {@inheritDoc}