code: private AtomicValue parseIntegerLiteral() {
  
          String value = mToken.getContent();
          String type = "xs:integer";
  
          if (is(TokenType.VALUE, false)) {
  
              // is at least decimal literal (could also be a double literal)
              if (mToken.getType() == TokenType.POINT) {
                  // TODO: not so nice, try to find a better solution
                  final boolean isDouble = mScanner.lookUpTokens(2).getType() == TokenType.E_NUMBER;
                  value = parseDecimalLiteral(value);
                  type = isDouble ? "xs:double" : "xs:decimal";
              }
  
              // values containing an 'e' are double literals
              if (mToken.getType() == TokenType.E_NUMBER) {
                  value = parseDoubleLiteral(value);
                  type = "xs:double";
              }
  
          } else {
              // decimal literal that starts with a "."
              final boolean isDouble = mScanner.lookUpTokens(2).getType() == TokenType.E_NUMBER;
              value = parseDecimalLiteral("");
              type = isDouble ? "xs:double" : "xs:decimal";
          }
  
          is(TokenType.SPACE, true);
  
          final AtomicValue mIntLiteral =
              new AtomicValue(TypedValue.getBytes(value), NamePageHash.generateHashForString(type));
          return mIntLiteral;
      }
docs: Parses the the rule IntegerLiteral according to the following production
  rule:
  <p>
  [70] IntegerLiteral ::= Digits => IntergerLiteral : Token.Value .
  </p>
  
  @return parseItem