code: public Number deserializeNumber(String s) {
  		if(s.indexOf('.') >= 0 || s.indexOf('e') >= 0 || s.indexOf('E') >= 0) {
  			return Double.valueOf(s);
  		} else {
  			Long l = Long.valueOf(s);
  			if(l > Integer.MAX_VALUE || l <Integer.MIN_VALUE) {
  				return l;
  			} else {
  				return new Integer(l.intValue());
  			}
  		}
  	}
docs: TODO faster and less new()