code: @Override public PType caseAAbsoluteUnaryExp(AAbsoluteUnaryExp node,
  			TypeCheckInfo question) throws AnalysisException
  	{
  		question.qualifiers = null;
  		TypeCheckInfo absConstraint = question.newConstraint(null);
  
  		if (question.constraint != null
  				&& question.assistantFactory.createPTypeAssistant().isNumeric(question.constraint))
  		{
  			if (question.constraint instanceof AIntNumericBasicType
  					|| question.constraint instanceof ANatOneNumericBasicType)
  			{
  				absConstraint = question.newConstraint(AstFactory.newAIntNumericBasicType(node.getLocation()));
  			} else
  			{
  				absConstraint = question;
  			}
  		}
  
  		PType t = node.getExp().apply(THIS, absConstraint);
  
  		if (!question.assistantFactory.createPTypeAssistant().isNumeric(t))
  		{
  			TypeCheckerErrors.report(3053, "Argument of 'abs' is not numeric", node.getLocation(), node);
  		} else if (t instanceof AIntNumericBasicType)
  		{
  			t = AstFactory.newANatNumericBasicType(t.getLocation());
  		}
  
  		node.setType(t);
  		return t;
  	}
docs: UNARY Expressions
  
  @throws AnalysisException