code: public SmiType createIntegerType(IdToken idToken, IntKeywordToken intToken, Token applicationTagToken, List<SmiNamedNumber> namedNumbers, List<SmiRange> rangeConstraints) {
          if (idToken == null && intToken.getPrimitiveType() == INTEGER && namedNumbers == null && rangeConstraints == null) {
              return SmiConstants.INTEGER_TYPE;
          } else if (idToken != null || namedNumbers != null || rangeConstraints != null) {
              SmiType type = createPotentiallyTaggedType(idToken, applicationTagToken);
              if (intToken.getPrimitiveType() == INTEGER) {
                  type.setBaseType(SmiConstants.INTEGER_TYPE);
              } else {
                  type.setBaseType(new SmiReferencedType(intToken, m_module));
              }
              type.setEnumValues(namedNumbers);
              type.setRangeConstraints(rangeConstraints);
              return type;
          }
          return new SmiReferencedType(intToken, m_module);
      }
docs: and resolve references to INTEGER, BITS, ... during the XRef phase