code: public AisMessage parse(String message, String source, int padBits) {
  		AisExtractor extractor = factory.create(message, 0, padBits);
  		int id = extractor.getMessageId();
  		if (Util.isClassAPositionReport(id)) {
  			return new AisPositionA(message, source, padBits);
  		} else if (id == 4)
  			return new AisBaseStation(message, source, padBits);
  		else if (id == 5)
  			return new AisShipStaticA(message, source, padBits);
  		else if (id == 18)
  			return new AisPositionB(message, source, padBits);
  		else if (id == 19)
  			return new AisPositionBExtended(message, source, padBits);
  		else if (id == 21)
  			return new AisAidToNavigation(message, source, padBits);
  		else
  			return new AisMessageOther(id, source, padBits);
  	}
docs: Returns an {@link AisMessage} from the string representation of the
  message as per 1371-4 IMO specification (as per the appropriate column in
  the NMEA message).
  
  @param message
  @param source
  @return