code: private void checkMeasure(TypeCheckInfo question, SFunctionDefinitionBase node, ILexNameToken iLexNameToken, PType result)
  	{
  		PTypeAssistantTC assistant = question.assistantFactory.createPTypeAssistant();
  		
  		if (!assistant.isNumeric(result))
  		{
  			if (assistant.isProduct(result))
  			{
  				AProductType pt = assistant.getProduct(result);
  
  				for (PType t : pt.getTypes())
  				{
  					if (!assistant.isNumeric(t))
  					{
  						TypeCheckerErrors.report(3272, "Measure range is not a nat, or a nat tuple", node.getMeasure().getLocation(), node.getMeasure());
  						TypeCheckerErrors.detail("Actual", result);
  						break;
  					}
  				}
  			}
  			else
  			{
  				TypeCheckerErrors.report(3272, "Measure range is not a nat, or a nat tuple", node.getMeasure().getLocation(), node.getMeasure());
  				TypeCheckerErrors.detail("Actual", result);
  			}
  		}
  	}
docs: A measure must return a nat or nat-tuple.