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 ) ; }
and resolve references to INTEGER BITS ... during the XRef phase