skeleton for J2735
diff --git a/examples/README b/examples/README
index 82a4a36..cf6e225 100644
--- a/examples/README
+++ b/examples/README
@@ -25,8 +25,11 @@
    Before trying to compile, read the README file in that directory.
 
 8. The ./sample.source.ULP directory contains the Open Mobile Alliance
-   UserPlane Location Protocol decoder. Before trying to compile, read the
-   README file in that directory.
+   UserPlane Location Protocol decoder.
+   Before trying to compile, read the README file in that directory.
+
+9. The ./sample.source.J2735 directory contains the SAE J2735-201603 decoder.
+   Before trying to compile, read the README file in that directory.
 
 The crfc2asn1.pl script can be used to extract ASN.1 data from RFC texts.
 For instance, it is used to extract X.509, MEGACO, and LDAPv3 ASN.1 modules
diff --git a/examples/sample.source.J2735/Makefile b/examples/sample.source.J2735/Makefile
new file mode 100644
index 0000000..a0c79c5
--- /dev/null
+++ b/examples/sample.source.J2735/Makefile
@@ -0,0 +1,1155 @@
+ASN_MODULE_SOURCES=	\
+	MessageFrame.c	\
+	RegionalExtension.c	\
+	BasicSafetyMessage.c	\
+	PartIIcontent.c	\
+	PartII-Id.c	\
+	CommonSafetyRequest.c	\
+	EmergencyVehicleAlert.c	\
+	IntersectionCollision.c	\
+	MapData.c	\
+	NMEAcorrections.c	\
+	PersonalSafetyMessage.c	\
+	ProbeDataManagement.c	\
+	ProbeVehicleData.c	\
+	RoadSideAlert.c	\
+	RTCMcorrections.c	\
+	SPAT.c	\
+	SignalRequestMessage.c	\
+	SignalStatusMessage.c	\
+	TravelerInformation.c	\
+	TestMessage00.c	\
+	TestMessage01.c	\
+	TestMessage02.c	\
+	TestMessage03.c	\
+	TestMessage04.c	\
+	TestMessage05.c	\
+	TestMessage06.c	\
+	TestMessage07.c	\
+	TestMessage08.c	\
+	TestMessage09.c	\
+	TestMessage10.c	\
+	TestMessage11.c	\
+	TestMessage12.c	\
+	TestMessage13.c	\
+	TestMessage14.c	\
+	TestMessage15.c	\
+	AccelerationSet4Way.c	\
+	AccelSteerYawRateConfidence.c	\
+	AdvisorySpeed.c	\
+	AdvisorySpeedList.c	\
+	AntennaOffsetSet.c	\
+	ApproachOrLane.c	\
+	BrakeSystemStatus.c	\
+	BSMcoreData.c	\
+	BumperHeights.c	\
+	Circle.c	\
+	ComputedLane.c	\
+	ConfidenceSet.c	\
+	ConnectingLane.c	\
+	Connection.c	\
+	ConnectionManeuverAssist.c	\
+	ConnectsToList.c	\
+	DataParameters.c	\
+	DDate.c	\
+	DDateTime.c	\
+	DFullTime.c	\
+	DMonthDay.c	\
+	DTime.c	\
+	DYearMonth.c	\
+	DisabledVehicle.c	\
+	EmergencyDetails.c	\
+	EnabledLaneList.c	\
+	EventDescription.c	\
+	FullPositionVector.c	\
+	GenericLane.c	\
+	GeographicalPath.c	\
+	GeometricProjection.c	\
+	Header.c	\
+	IntersectionAccessPoint.c	\
+	IntersectionGeometry.c	\
+	IntersectionGeometryList.c	\
+	IntersectionReferenceID.c	\
+	IntersectionState.c	\
+	IntersectionStateList.c	\
+	ExitService.c	\
+	GenericSignage.c	\
+	SpeedLimit.c	\
+	WorkZone.c	\
+	J1939data.c	\
+	TireDataList.c	\
+	TireData.c	\
+	AxleWeightList.c	\
+	AxleWeightSet.c	\
+	LaneAttributes.c	\
+	LaneDataAttribute.c	\
+	LaneDataAttributeList.c	\
+	LaneList.c	\
+	LaneTypeAttributes.c	\
+	ManeuverAssistList.c	\
+	MovementEventList.c	\
+	MovementEvent.c	\
+	MovementList.c	\
+	MovementState.c	\
+	Node-LL-24B.c	\
+	Node-LL-28B.c	\
+	Node-LL-32B.c	\
+	Node-LL-36B.c	\
+	Node-LL-44B.c	\
+	Node-LL-48B.c	\
+	Node-LLmD-64b.c	\
+	Node-XY-20b.c	\
+	Node-XY-22b.c	\
+	Node-XY-24b.c	\
+	Node-XY-26b.c	\
+	Node-XY-28b.c	\
+	Node-XY-32b.c	\
+	NodeAttributeLLList.c	\
+	NodeAttributeSetLL.c	\
+	NodeAttributeSetXY.c	\
+	NodeAttributeXYList.c	\
+	NodeListLL.c	\
+	NodeListXY.c	\
+	NodeLL.c	\
+	NodeOffsetPointLL.c	\
+	NodeOffsetPointXY.c	\
+	NodeSetLL.c	\
+	NodeSetXY.c	\
+	NodeXY.c	\
+	ObstacleDetection.c	\
+	OffsetSystem.c	\
+	OverlayLaneList.c	\
+	PathHistory.c	\
+	PathHistoryPointList.c	\
+	PathHistoryPoint.c	\
+	PathPrediction.c	\
+	PivotPointDescription.c	\
+	Position3D.c	\
+	PositionalAccuracy.c	\
+	PositionConfidenceSet.c	\
+	PreemptPriorityList.c	\
+	SignalControlZone.c	\
+	PrivilegedEvents.c	\
+	PropelledInformation.c	\
+	RegionList.c	\
+	RegionOffsets.c	\
+	RegionPointSet.c	\
+	RegulatorySpeedLimit.c	\
+	RequestedItemList.c	\
+	RequestorDescription.c	\
+	RequestorPositionVector.c	\
+	RequestorType.c	\
+	RestrictionClassAssignment.c	\
+	RestrictionClassList.c	\
+	RestrictionUserTypeList.c	\
+	RestrictionUserType.c	\
+	RoadLaneSetList.c	\
+	RoadSegmentList.c	\
+	RoadSegmentReferenceID.c	\
+	RoadSegment.c	\
+	RoadSignID.c	\
+	RTCMheader.c	\
+	RTCMmessageList.c	\
+	RTCMPackage.c	\
+	Sample.c	\
+	SegmentAttributeLLList.c	\
+	SegmentAttributeXYList.c	\
+	ShapePointSet.c	\
+	SignalRequesterInfo.c	\
+	SignalRequestList.c	\
+	SignalRequestPackage.c	\
+	SignalRequest.c	\
+	SignalStatusList.c	\
+	SignalStatusPackageList.c	\
+	SignalStatusPackage.c	\
+	SignalStatus.c	\
+	SnapshotDistance.c	\
+	Snapshot.c	\
+	SnapshotTime.c	\
+	SpecialVehicleExtensions.c	\
+	SpeedandHeadingandThrottleConfidence.c	\
+	SpeedLimitList.c	\
+	SpeedProfileMeasurementList.c	\
+	SpeedProfile.c	\
+	SupplementalVehicleExtensions.c	\
+	TimeChangeDetails.c	\
+	TrailerData.c	\
+	TrailerHistoryPointList.c	\
+	TrailerHistoryPoint.c	\
+	TrailerUnitDescriptionList.c	\
+	TrailerUnitDescription.c	\
+	TransmissionAndSpeed.c	\
+	TravelerDataFrameList.c	\
+	TravelerDataFrame.c	\
+	ValidRegion.c	\
+	VehicleClassification.c	\
+	VehicleData.c	\
+	VehicleIdent.c	\
+	VehicleID.c	\
+	VehicleSafetyExtensions.c	\
+	VehicleSize.c	\
+	VehicleStatusRequest.c	\
+	VehicleStatusRequestList.c	\
+	VehicleStatus.c	\
+	VerticalOffset.c	\
+	WeatherProbe.c	\
+	WeatherReport.c	\
+	WiperSet.c	\
+	Acceleration.c	\
+	AccelerationConfidence.c	\
+	AdvisorySpeedType.c	\
+	AllowedManeuvers.c	\
+	AmbientAirPressure.c	\
+	AmbientAirTemperature.c	\
+	DSRC_Angle.c	\
+	AnimalPropelledType.c	\
+	AnimalType.c	\
+	AntiLockBrakeStatus.c	\
+	ApproachID.c	\
+	Attachment.c	\
+	AttachmentRadius.c	\
+	AuxiliaryBrakeStatus.c	\
+	BasicVehicleClass.c	\
+	BasicVehicleRole.c	\
+	BrakeAppliedPressure.c	\
+	BrakeAppliedStatus.c	\
+	BrakeBoostApplied.c	\
+	BumperHeight.c	\
+	CoarseHeading.c	\
+	CodeWord.c	\
+	CoefficientOfFriction.c	\
+	Confidence.c	\
+	Count.c	\
+	DDay.c	\
+	DeltaAngle.c	\
+	DeltaTime.c	\
+	DescriptiveName.c	\
+	DHour.c	\
+	DirectionOfUse.c	\
+	DistanceUnits.c	\
+	DMinute.c	\
+	DMonth.c	\
+	DOffset.c	\
+	DrivenLineOffsetLg.c	\
+	DrivenLineOffsetSm.c	\
+	DrivingWheelAngle.c	\
+	DSecond.c	\
+	DSRCmsgID.c	\
+	Duration.c	\
+	DYear.c	\
+	ElevationConfidence.c	\
+	DSRC_Elevation.c	\
+	Extent.c	\
+	ExteriorLights.c	\
+	FuelType.c	\
+	FurtherInfoID.c	\
+	GNSSstatus.c	\
+	GrossDistance.c	\
+	GrossSpeed.c	\
+	HeadingConfidence.c	\
+	Heading.c	\
+	HeadingSlice.c	\
+	IntersectionID.c	\
+	IntersectionStatusObject.c	\
+	IsDolly.c	\
+	Iso3833VehicleType.c	\
+	ITIStextPhrase.c	\
+	AxleLocation.c	\
+	AxleWeight.c	\
+	CargoWeight.c	\
+	DriveAxleLiftAirPressure.c	\
+	DriveAxleLocation.c	\
+	DriveAxleLubePressure.c	\
+	DriveAxleTemperature.c	\
+	SteeringAxleLubePressure.c	\
+	SteeringAxleTemperature.c	\
+	TireLeakageRate.c	\
+	TireLocation.c	\
+	TirePressureThresholdDetection.c	\
+	TirePressure.c	\
+	TireTemp.c	\
+	TrailerWeight.c	\
+	WheelEndElectFault.c	\
+	WheelSensorStatus.c	\
+	LaneAttributes-Barrier.c	\
+	LaneAttributes-Bike.c	\
+	LaneAttributes-Crosswalk.c	\
+	LaneAttributes-Parking.c	\
+	LaneAttributes-Sidewalk.c	\
+	LaneAttributes-Striping.c	\
+	LaneAttributes-TrackedVehicle.c	\
+	LaneAttributes-Vehicle.c	\
+	LaneConnectionID.c	\
+	LaneDirection.c	\
+	LaneID.c	\
+	LaneSharing.c	\
+	LaneWidth.c	\
+	Latitude.c	\
+	LayerID.c	\
+	LayerType.c	\
+	LightbarInUse.c	\
+	Longitude.c	\
+	Location-quality.c	\
+	Location-tech.c	\
+	MergeDivergeNodeAngle.c	\
+	MessageBLOB.c	\
+	MinuteOfTheYear.c	\
+	MinutesDuration.c	\
+	MotorizedPropelledType.c	\
+	MovementPhaseState.c	\
+	DSRC_MsgCount.c	\
+	MsgCRC.c	\
+	MultiVehicleResponse.c	\
+	MUTCDCode.c	\
+	NMEA-MsgType.c	\
+	NMEA-Payload.c	\
+	NMEA-Revision.c	\
+	NodeAttributeLL.c	\
+	NodeAttributeXY.c	\
+	NumberOfParticipantsInCluster.c	\
+	ObjectCount.c	\
+	ObstacleDirection.c	\
+	ObstacleDistance.c	\
+	Offset-B09.c	\
+	Offset-B10.c	\
+	Offset-B11.c	\
+	Offset-B12.c	\
+	Offset-B13.c	\
+	Offset-B14.c	\
+	Offset-B16.c	\
+	OffsetLL-B12.c	\
+	OffsetLL-B14.c	\
+	OffsetLL-B16.c	\
+	OffsetLL-B18.c	\
+	OffsetLL-B22.c	\
+	OffsetLL-B24.c	\
+	PayloadData.c	\
+	PedestrianBicycleDetect.c	\
+	HumanPropelledType.c	\
+	PersonalAssistive.c	\
+	PersonalClusterRadius.c	\
+	PersonalCrossingInProgress.c	\
+	PersonalCrossingRequest.c	\
+	PersonalDeviceUsageState.c	\
+	PersonalDeviceUserType.c	\
+	PivotingAllowed.c	\
+	PositionConfidence.c	\
+	PrioritizationResponseStatus.c	\
+	Priority.c	\
+	PriorityRequestType.c	\
+	PrivilegedEventFlags.c	\
+	ProbeSegmentNumber.c	\
+	PublicSafetyAndRoadWorkerActivity.c	\
+	PublicSafetyDirectingTrafficSubType.c	\
+	PublicSafetyEventResponderWorkerType.c	\
+	RadiusOfCurvature.c	\
+	Radius-B12.c	\
+	RainSensor.c	\
+	RegionId.c	\
+	RequestedItem.c	\
+	RequestID.c	\
+	RequestImportanceLevel.c	\
+	RequestSubRole.c	\
+	ResponseType.c	\
+	RestrictionAppliesTo.c	\
+	RestrictionClassID.c	\
+	RoadRegulatorID.c	\
+	RoadSegmentID.c	\
+	RoadwayCrownAngle.c	\
+	RTCM-Revision.c	\
+	RTCMmessage.c	\
+	Scale-B12.c	\
+	SecondOfTime.c	\
+	SegmentAttributeLL.c	\
+	SegmentAttributeXY.c	\
+	SemiMajorAxisAccuracy.c	\
+	SemiMajorAxisOrientation.c	\
+	SemiMinorAxisAccuracy.c	\
+	SignalGroupID.c	\
+	SignalReqScheme.c	\
+	SignPrority.c	\
+	SirenInUse.c	\
+	SpeedAdvice.c	\
+	SpeedConfidence.c	\
+	SpeedLimitType.c	\
+	SpeedProfileMeasurement.c	\
+	Speed.c	\
+	SSPindex.c	\
+	StabilityControlStatus.c	\
+	StationID.c	\
+	SteeringWheelAngleConfidence.c	\
+	SteeringWheelAngleRateOfChange.c	\
+	SteeringWheelAngle.c	\
+	SunSensor.c	\
+	TemporaryID.c	\
+	TermDistance.c	\
+	TermTime.c	\
+	ThrottleConfidence.c	\
+	ThrottlePosition.c	\
+	TimeConfidence.c	\
+	TimeIntervalConfidence.c	\
+	DSRC_TimeMark.c	\
+	TimeOffset.c	\
+	TractionControlStatus.c	\
+	TrailerMass.c	\
+	TransitStatus.c	\
+	TransitVehicleOccupancy.c	\
+	TransitVehicleStatus.c	\
+	TransmissionState.c	\
+	TravelerInfoType.c	\
+	UniqueMSGID.c	\
+	URL-Base.c	\
+	URL-Link.c	\
+	URL-Short.c	\
+	UserSizeAndBehaviour.c	\
+	VehicleEventFlags.c	\
+	VehicleHeight.c	\
+	VehicleLength.c	\
+	VehicleMass.c	\
+	VehicleStatusDeviceTypeTag.c	\
+	VehicleType.c	\
+	VehicleWidth.c	\
+	Velocity.c	\
+	VerticalAccelerationThreshold.c	\
+	VerticalAcceleration.c	\
+	VertOffset-B07.c	\
+	VertOffset-B08.c	\
+	VertOffset-B09.c	\
+	VertOffset-B10.c	\
+	VertOffset-B11.c	\
+	VertOffset-B12.c	\
+	VINstring.c	\
+	WaitOnStopline.c	\
+	WiperRate.c	\
+	WiperStatus.c	\
+	YawRateConfidence.c	\
+	YawRate.c	\
+	ZoneLength.c	\
+	Zoom.c	\
+	AltitudeConfidence.c	\
+	AltitudeValue.c	\
+	EmissionType.c	\
+	Altitude.c	\
+	PrioritizationResponse.c	\
+	PrioritizationResponseList.c	\
+	ConnectionManeuverAssist-addGrpC.c	\
+	IntersectionState-addGrpC.c	\
+	MapData-addGrpC.c	\
+	Position3D-addGrpC.c	\
+	RestrictionUserType-addGrpC.c	\
+	SignalHeadLocation.c	\
+	SignalHeadLocationList.c	\
+	VehicleToLanePosition.c	\
+	VehicleToLanePositionList.c	\
+	AddGrpB_Angle.c	\
+	Day.c	\
+	DayOfWeek.c	\
+	DegreesLat.c	\
+	DegreesLong.c	\
+	AddGrpB_Elevation.c	\
+	Holiday.c	\
+	Hour.c	\
+	LatitudeDMS.c	\
+	LongitudeDMS.c	\
+	MaxTimetoChange.c	\
+	MinTimetoChange.c	\
+	Minute.c	\
+	MinutesAngle.c	\
+	Month.c	\
+	AddGrpB_MsgCount.c	\
+	Second.c	\
+	SecondsAngle.c	\
+	SummerTime.c	\
+	TenthSecond.c	\
+	TimeRemaining.c	\
+	Year.c	\
+	LatitudeDMS2.c	\
+	LongitudeDMS2.c	\
+	Node-LLdms-48b.c	\
+	Node-LLdms-80b.c	\
+	LaneDataAttribute-addGrpB.c	\
+	MovementEvent-addGrpB.c	\
+	NodeOffsetPointXY-addGrpB.c	\
+	Position3D-addGrpB.c	\
+	AddGrpB_TimeMark.c	\
+	EssMobileFriction.c	\
+	EssPrecipRate.c	\
+	EssPrecipSituation.c	\
+	EssPrecipYesNo.c	\
+	EssSolarRadiation.c	\
+	GenericLocations.c	\
+	IncidentResponseEquipment.c	\
+	ITIStext.c	\
+	ResponderGroupAffected.c	\
+	VehicleGroupAffected.c	\
+	ITIScodesAndText.c	\
+	ITIScodes.c
+
+ASN_MODULE_HEADERS=	\
+	MessageFrame.h	\
+	RegionalExtension.h	\
+	BasicSafetyMessage.h	\
+	PartIIcontent.h	\
+	PartII-Id.h	\
+	CommonSafetyRequest.h	\
+	EmergencyVehicleAlert.h	\
+	IntersectionCollision.h	\
+	MapData.h	\
+	NMEAcorrections.h	\
+	PersonalSafetyMessage.h	\
+	ProbeDataManagement.h	\
+	ProbeVehicleData.h	\
+	RoadSideAlert.h	\
+	RTCMcorrections.h	\
+	SPAT.h	\
+	SignalRequestMessage.h	\
+	SignalStatusMessage.h	\
+	TravelerInformation.h	\
+	TestMessage00.h	\
+	TestMessage01.h	\
+	TestMessage02.h	\
+	TestMessage03.h	\
+	TestMessage04.h	\
+	TestMessage05.h	\
+	TestMessage06.h	\
+	TestMessage07.h	\
+	TestMessage08.h	\
+	TestMessage09.h	\
+	TestMessage10.h	\
+	TestMessage11.h	\
+	TestMessage12.h	\
+	TestMessage13.h	\
+	TestMessage14.h	\
+	TestMessage15.h	\
+	AccelerationSet4Way.h	\
+	AccelSteerYawRateConfidence.h	\
+	AdvisorySpeed.h	\
+	AdvisorySpeedList.h	\
+	AntennaOffsetSet.h	\
+	ApproachOrLane.h	\
+	BrakeSystemStatus.h	\
+	BSMcoreData.h	\
+	BumperHeights.h	\
+	Circle.h	\
+	ComputedLane.h	\
+	ConfidenceSet.h	\
+	ConnectingLane.h	\
+	Connection.h	\
+	ConnectionManeuverAssist.h	\
+	ConnectsToList.h	\
+	DataParameters.h	\
+	DDate.h	\
+	DDateTime.h	\
+	DFullTime.h	\
+	DMonthDay.h	\
+	DTime.h	\
+	DYearMonth.h	\
+	DisabledVehicle.h	\
+	EmergencyDetails.h	\
+	EnabledLaneList.h	\
+	EventDescription.h	\
+	FullPositionVector.h	\
+	GenericLane.h	\
+	GeographicalPath.h	\
+	GeometricProjection.h	\
+	Header.h	\
+	IntersectionAccessPoint.h	\
+	IntersectionGeometry.h	\
+	IntersectionGeometryList.h	\
+	IntersectionReferenceID.h	\
+	IntersectionState.h	\
+	IntersectionStateList.h	\
+	ExitService.h	\
+	GenericSignage.h	\
+	SpeedLimit.h	\
+	WorkZone.h	\
+	J1939data.h	\
+	TireDataList.h	\
+	TireData.h	\
+	AxleWeightList.h	\
+	AxleWeightSet.h	\
+	LaneAttributes.h	\
+	LaneDataAttribute.h	\
+	LaneDataAttributeList.h	\
+	LaneList.h	\
+	LaneTypeAttributes.h	\
+	ManeuverAssistList.h	\
+	MovementEventList.h	\
+	MovementEvent.h	\
+	MovementList.h	\
+	MovementState.h	\
+	Node-LL-24B.h	\
+	Node-LL-28B.h	\
+	Node-LL-32B.h	\
+	Node-LL-36B.h	\
+	Node-LL-44B.h	\
+	Node-LL-48B.h	\
+	Node-LLmD-64b.h	\
+	Node-XY-20b.h	\
+	Node-XY-22b.h	\
+	Node-XY-24b.h	\
+	Node-XY-26b.h	\
+	Node-XY-28b.h	\
+	Node-XY-32b.h	\
+	NodeAttributeLLList.h	\
+	NodeAttributeSetLL.h	\
+	NodeAttributeSetXY.h	\
+	NodeAttributeXYList.h	\
+	NodeListLL.h	\
+	NodeListXY.h	\
+	NodeLL.h	\
+	NodeOffsetPointLL.h	\
+	NodeOffsetPointXY.h	\
+	NodeSetLL.h	\
+	NodeSetXY.h	\
+	NodeXY.h	\
+	ObstacleDetection.h	\
+	OffsetSystem.h	\
+	OverlayLaneList.h	\
+	PathHistory.h	\
+	PathHistoryPointList.h	\
+	PathHistoryPoint.h	\
+	PathPrediction.h	\
+	PivotPointDescription.h	\
+	Position3D.h	\
+	PositionalAccuracy.h	\
+	PositionConfidenceSet.h	\
+	PreemptPriorityList.h	\
+	SignalControlZone.h	\
+	PrivilegedEvents.h	\
+	PropelledInformation.h	\
+	RegionList.h	\
+	RegionOffsets.h	\
+	RegionPointSet.h	\
+	RegulatorySpeedLimit.h	\
+	RequestedItemList.h	\
+	RequestorDescription.h	\
+	RequestorPositionVector.h	\
+	RequestorType.h	\
+	RestrictionClassAssignment.h	\
+	RestrictionClassList.h	\
+	RestrictionUserTypeList.h	\
+	RestrictionUserType.h	\
+	RoadLaneSetList.h	\
+	RoadSegmentList.h	\
+	RoadSegmentReferenceID.h	\
+	RoadSegment.h	\
+	RoadSignID.h	\
+	RTCMheader.h	\
+	RTCMmessageList.h	\
+	RTCMPackage.h	\
+	Sample.h	\
+	SegmentAttributeLLList.h	\
+	SegmentAttributeXYList.h	\
+	ShapePointSet.h	\
+	SignalRequesterInfo.h	\
+	SignalRequestList.h	\
+	SignalRequestPackage.h	\
+	SignalRequest.h	\
+	SignalStatusList.h	\
+	SignalStatusPackageList.h	\
+	SignalStatusPackage.h	\
+	SignalStatus.h	\
+	SnapshotDistance.h	\
+	Snapshot.h	\
+	SnapshotTime.h	\
+	SpecialVehicleExtensions.h	\
+	SpeedandHeadingandThrottleConfidence.h	\
+	SpeedLimitList.h	\
+	SpeedProfileMeasurementList.h	\
+	SpeedProfile.h	\
+	SupplementalVehicleExtensions.h	\
+	TimeChangeDetails.h	\
+	TrailerData.h	\
+	TrailerHistoryPointList.h	\
+	TrailerHistoryPoint.h	\
+	TrailerUnitDescriptionList.h	\
+	TrailerUnitDescription.h	\
+	TransmissionAndSpeed.h	\
+	TravelerDataFrameList.h	\
+	TravelerDataFrame.h	\
+	ValidRegion.h	\
+	VehicleClassification.h	\
+	VehicleData.h	\
+	VehicleIdent.h	\
+	VehicleID.h	\
+	VehicleSafetyExtensions.h	\
+	VehicleSize.h	\
+	VehicleStatusRequest.h	\
+	VehicleStatusRequestList.h	\
+	VehicleStatus.h	\
+	VerticalOffset.h	\
+	WeatherProbe.h	\
+	WeatherReport.h	\
+	WiperSet.h	\
+	Acceleration.h	\
+	AccelerationConfidence.h	\
+	AdvisorySpeedType.h	\
+	AllowedManeuvers.h	\
+	AmbientAirPressure.h	\
+	AmbientAirTemperature.h	\
+	DSRC_Angle.h	\
+	AnimalPropelledType.h	\
+	AnimalType.h	\
+	AntiLockBrakeStatus.h	\
+	ApproachID.h	\
+	Attachment.h	\
+	AttachmentRadius.h	\
+	AuxiliaryBrakeStatus.h	\
+	BasicVehicleClass.h	\
+	BasicVehicleRole.h	\
+	BrakeAppliedPressure.h	\
+	BrakeAppliedStatus.h	\
+	BrakeBoostApplied.h	\
+	BumperHeight.h	\
+	CoarseHeading.h	\
+	CodeWord.h	\
+	CoefficientOfFriction.h	\
+	Confidence.h	\
+	Count.h	\
+	DDay.h	\
+	DeltaAngle.h	\
+	DeltaTime.h	\
+	DescriptiveName.h	\
+	DHour.h	\
+	DirectionOfUse.h	\
+	DistanceUnits.h	\
+	DMinute.h	\
+	DMonth.h	\
+	DOffset.h	\
+	DrivenLineOffsetLg.h	\
+	DrivenLineOffsetSm.h	\
+	DrivingWheelAngle.h	\
+	DSecond.h	\
+	DSRCmsgID.h	\
+	Duration.h	\
+	DYear.h	\
+	ElevationConfidence.h	\
+	DSRC_Elevation.h	\
+	Extent.h	\
+	ExteriorLights.h	\
+	FuelType.h	\
+	FurtherInfoID.h	\
+	GNSSstatus.h	\
+	GrossDistance.h	\
+	GrossSpeed.h	\
+	HeadingConfidence.h	\
+	Heading.h	\
+	HeadingSlice.h	\
+	IntersectionID.h	\
+	IntersectionStatusObject.h	\
+	IsDolly.h	\
+	Iso3833VehicleType.h	\
+	ITIStextPhrase.h	\
+	AxleLocation.h	\
+	AxleWeight.h	\
+	CargoWeight.h	\
+	DriveAxleLiftAirPressure.h	\
+	DriveAxleLocation.h	\
+	DriveAxleLubePressure.h	\
+	DriveAxleTemperature.h	\
+	SteeringAxleLubePressure.h	\
+	SteeringAxleTemperature.h	\
+	TireLeakageRate.h	\
+	TireLocation.h	\
+	TirePressureThresholdDetection.h	\
+	TirePressure.h	\
+	TireTemp.h	\
+	TrailerWeight.h	\
+	WheelEndElectFault.h	\
+	WheelSensorStatus.h	\
+	LaneAttributes-Barrier.h	\
+	LaneAttributes-Bike.h	\
+	LaneAttributes-Crosswalk.h	\
+	LaneAttributes-Parking.h	\
+	LaneAttributes-Sidewalk.h	\
+	LaneAttributes-Striping.h	\
+	LaneAttributes-TrackedVehicle.h	\
+	LaneAttributes-Vehicle.h	\
+	LaneConnectionID.h	\
+	LaneDirection.h	\
+	LaneID.h	\
+	LaneSharing.h	\
+	LaneWidth.h	\
+	Latitude.h	\
+	LayerID.h	\
+	LayerType.h	\
+	LightbarInUse.h	\
+	Longitude.h	\
+	Location-quality.h	\
+	Location-tech.h	\
+	MergeDivergeNodeAngle.h	\
+	MessageBLOB.h	\
+	MinuteOfTheYear.h	\
+	MinutesDuration.h	\
+	MotorizedPropelledType.h	\
+	MovementPhaseState.h	\
+	DSRC_MsgCount.h	\
+	MsgCRC.h	\
+	MultiVehicleResponse.h	\
+	MUTCDCode.h	\
+	NMEA-MsgType.h	\
+	NMEA-Payload.h	\
+	NMEA-Revision.h	\
+	NodeAttributeLL.h	\
+	NodeAttributeXY.h	\
+	NumberOfParticipantsInCluster.h	\
+	ObjectCount.h	\
+	ObstacleDirection.h	\
+	ObstacleDistance.h	\
+	Offset-B09.h	\
+	Offset-B10.h	\
+	Offset-B11.h	\
+	Offset-B12.h	\
+	Offset-B13.h	\
+	Offset-B14.h	\
+	Offset-B16.h	\
+	OffsetLL-B12.h	\
+	OffsetLL-B14.h	\
+	OffsetLL-B16.h	\
+	OffsetLL-B18.h	\
+	OffsetLL-B22.h	\
+	OffsetLL-B24.h	\
+	PayloadData.h	\
+	PedestrianBicycleDetect.h	\
+	HumanPropelledType.h	\
+	PersonalAssistive.h	\
+	PersonalClusterRadius.h	\
+	PersonalCrossingInProgress.h	\
+	PersonalCrossingRequest.h	\
+	PersonalDeviceUsageState.h	\
+	PersonalDeviceUserType.h	\
+	PivotingAllowed.h	\
+	PositionConfidence.h	\
+	PrioritizationResponseStatus.h	\
+	Priority.h	\
+	PriorityRequestType.h	\
+	PrivilegedEventFlags.h	\
+	ProbeSegmentNumber.h	\
+	PublicSafetyAndRoadWorkerActivity.h	\
+	PublicSafetyDirectingTrafficSubType.h	\
+	PublicSafetyEventResponderWorkerType.h	\
+	RadiusOfCurvature.h	\
+	Radius-B12.h	\
+	RainSensor.h	\
+	RegionId.h	\
+	RequestedItem.h	\
+	RequestID.h	\
+	RequestImportanceLevel.h	\
+	RequestSubRole.h	\
+	ResponseType.h	\
+	RestrictionAppliesTo.h	\
+	RestrictionClassID.h	\
+	RoadRegulatorID.h	\
+	RoadSegmentID.h	\
+	RoadwayCrownAngle.h	\
+	RTCM-Revision.h	\
+	RTCMmessage.h	\
+	Scale-B12.h	\
+	SecondOfTime.h	\
+	SegmentAttributeLL.h	\
+	SegmentAttributeXY.h	\
+	SemiMajorAxisAccuracy.h	\
+	SemiMajorAxisOrientation.h	\
+	SemiMinorAxisAccuracy.h	\
+	SignalGroupID.h	\
+	SignalReqScheme.h	\
+	SignPrority.h	\
+	SirenInUse.h	\
+	SpeedAdvice.h	\
+	SpeedConfidence.h	\
+	SpeedLimitType.h	\
+	SpeedProfileMeasurement.h	\
+	Speed.h	\
+	SSPindex.h	\
+	StabilityControlStatus.h	\
+	StationID.h	\
+	SteeringWheelAngleConfidence.h	\
+	SteeringWheelAngleRateOfChange.h	\
+	SteeringWheelAngle.h	\
+	SunSensor.h	\
+	TemporaryID.h	\
+	TermDistance.h	\
+	TermTime.h	\
+	ThrottleConfidence.h	\
+	ThrottlePosition.h	\
+	TimeConfidence.h	\
+	TimeIntervalConfidence.h	\
+	DSRC_TimeMark.h	\
+	TimeOffset.h	\
+	TractionControlStatus.h	\
+	TrailerMass.h	\
+	TransitStatus.h	\
+	TransitVehicleOccupancy.h	\
+	TransitVehicleStatus.h	\
+	TransmissionState.h	\
+	TravelerInfoType.h	\
+	UniqueMSGID.h	\
+	URL-Base.h	\
+	URL-Link.h	\
+	URL-Short.h	\
+	UserSizeAndBehaviour.h	\
+	VehicleEventFlags.h	\
+	VehicleHeight.h	\
+	VehicleLength.h	\
+	VehicleMass.h	\
+	VehicleStatusDeviceTypeTag.h	\
+	VehicleType.h	\
+	VehicleWidth.h	\
+	Velocity.h	\
+	VerticalAccelerationThreshold.h	\
+	VerticalAcceleration.h	\
+	VertOffset-B07.h	\
+	VertOffset-B08.h	\
+	VertOffset-B09.h	\
+	VertOffset-B10.h	\
+	VertOffset-B11.h	\
+	VertOffset-B12.h	\
+	VINstring.h	\
+	WaitOnStopline.h	\
+	WiperRate.h	\
+	WiperStatus.h	\
+	YawRateConfidence.h	\
+	YawRate.h	\
+	ZoneLength.h	\
+	Zoom.h	\
+	AltitudeConfidence.h	\
+	AltitudeValue.h	\
+	EmissionType.h	\
+	Altitude.h	\
+	PrioritizationResponse.h	\
+	PrioritizationResponseList.h	\
+	ConnectionManeuverAssist-addGrpC.h	\
+	IntersectionState-addGrpC.h	\
+	MapData-addGrpC.h	\
+	Position3D-addGrpC.h	\
+	RestrictionUserType-addGrpC.h	\
+	SignalHeadLocation.h	\
+	SignalHeadLocationList.h	\
+	VehicleToLanePosition.h	\
+	VehicleToLanePositionList.h	\
+	AddGrpB_Angle.h	\
+	Day.h	\
+	DayOfWeek.h	\
+	DegreesLat.h	\
+	DegreesLong.h	\
+	AddGrpB_Elevation.h	\
+	Holiday.h	\
+	Hour.h	\
+	LatitudeDMS.h	\
+	LongitudeDMS.h	\
+	MaxTimetoChange.h	\
+	MinTimetoChange.h	\
+	Minute.h	\
+	MinutesAngle.h	\
+	Month.h	\
+	AddGrpB_MsgCount.h	\
+	Second.h	\
+	SecondsAngle.h	\
+	SummerTime.h	\
+	TenthSecond.h	\
+	TimeRemaining.h	\
+	Year.h	\
+	LatitudeDMS2.h	\
+	LongitudeDMS2.h	\
+	Node-LLdms-48b.h	\
+	Node-LLdms-80b.h	\
+	LaneDataAttribute-addGrpB.h	\
+	MovementEvent-addGrpB.h	\
+	NodeOffsetPointXY-addGrpB.h	\
+	Position3D-addGrpB.h	\
+	AddGrpB_TimeMark.h	\
+	EssMobileFriction.h	\
+	EssPrecipRate.h	\
+	EssPrecipSituation.h	\
+	EssPrecipYesNo.h	\
+	EssSolarRadiation.h	\
+	GenericLocations.h	\
+	IncidentResponseEquipment.h	\
+	ITIStext.h	\
+	ResponderGroupAffected.h	\
+	VehicleGroupAffected.h	\
+	ITIScodesAndText.h	\
+	ITIScodes.h
+
+ASN_MODULE_HEADERS+=ANY.h
+ASN_MODULE_SOURCES+=ANY.c
+ASN_MODULE_HEADERS+=BOOLEAN.h
+ASN_MODULE_SOURCES+=BOOLEAN.c
+ASN_MODULE_HEADERS+=INTEGER.h
+ASN_MODULE_HEADERS+=NativeEnumerated.h
+ASN_MODULE_HEADERS+=IA5String.h
+ASN_MODULE_SOURCES+=IA5String.c
+ASN_MODULE_SOURCES+=INTEGER.c
+ASN_MODULE_SOURCES+=NativeEnumerated.c
+ASN_MODULE_HEADERS+=NativeInteger.h
+ASN_MODULE_SOURCES+=NativeInteger.c
+ASN_MODULE_SOURCES+=NativeInteger_oer.c
+ASN_MODULE_HEADERS+=asn_SEQUENCE_OF.h
+ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.c
+ASN_MODULE_HEADERS+=asn_SET_OF.h
+ASN_MODULE_SOURCES+=asn_SET_OF.c
+ASN_MODULE_HEADERS+=constr_CHOICE.h
+ASN_MODULE_SOURCES+=constr_CHOICE.c
+ASN_MODULE_HEADERS+=constr_SEQUENCE.h
+ASN_MODULE_SOURCES+=constr_SEQUENCE.c
+ASN_MODULE_HEADERS+=constr_SEQUENCE_OF.h
+ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.c
+ASN_MODULE_HEADERS+=constr_SET_OF.h
+ASN_MODULE_SOURCES+=constr_SET_OF.c
+ASN_MODULE_HEADERS+=asn_application.h
+ASN_MODULE_HEADERS+=asn_system.h
+ASN_MODULE_HEADERS+=asn_codecs.h
+ASN_MODULE_HEADERS+=asn_internal.h
+ASN_MODULE_HEADERS+=OCTET_STRING.h
+ASN_MODULE_SOURCES+=OCTET_STRING.c
+ASN_MODULE_HEADERS+=BIT_STRING.h
+ASN_MODULE_SOURCES+=BIT_STRING.c
+ASN_MODULE_SOURCES+=asn_codecs_prim.c
+ASN_MODULE_HEADERS+=asn_codecs_prim.h
+ASN_MODULE_HEADERS+=ber_tlv_length.h
+ASN_MODULE_SOURCES+=ber_tlv_length.c
+ASN_MODULE_HEADERS+=ber_tlv_tag.h
+ASN_MODULE_SOURCES+=ber_tlv_tag.c
+ASN_MODULE_HEADERS+=ber_decoder.h
+ASN_MODULE_SOURCES+=ber_decoder.c
+ASN_MODULE_HEADERS+=der_encoder.h
+ASN_MODULE_SOURCES+=der_encoder.c
+ASN_MODULE_HEADERS+=constr_TYPE.h
+ASN_MODULE_SOURCES+=constr_TYPE.c
+ASN_MODULE_HEADERS+=constraints.h
+ASN_MODULE_SOURCES+=constraints.c
+ASN_MODULE_HEADERS+=xer_support.h
+ASN_MODULE_SOURCES+=xer_support.c
+ASN_MODULE_HEADERS+=xer_decoder.h
+ASN_MODULE_SOURCES+=xer_decoder.c
+ASN_MODULE_HEADERS+=xer_encoder.h
+ASN_MODULE_SOURCES+=xer_encoder.c
+ASN_MODULE_HEADERS+=oer_decoder.h
+ASN_MODULE_SOURCES+=oer_decoder.c
+ASN_MODULE_HEADERS+=oer_encoder.h
+ASN_MODULE_SOURCES+=oer_encoder.c
+ASN_MODULE_HEADERS+=oer_support.h
+ASN_MODULE_SOURCES+=oer_support.c
+ASN_MODULE_HEADERS+=per_support.h
+ASN_MODULE_SOURCES+=per_support.c
+ASN_MODULE_HEADERS+=per_decoder.h
+ASN_MODULE_SOURCES+=per_decoder.c
+ASN_MODULE_HEADERS+=per_encoder.h
+ASN_MODULE_SOURCES+=per_encoder.c
+ASN_MODULE_HEADERS+=per_opentype.h
+ASN_MODULE_SOURCES+=per_opentype.c
+ASN_CONVERTER_SOURCES+=converter-sample.c
+
+
+lib_LTLIBRARIES=libsomething.la
+libsomething_la_SOURCES=$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS)
+
+# This file may be used as an input for make(3)
+# Remove the lines below to convert it into a pure .am file
+TARGET = j2735-dump
+CFLAGS += -DASN_CONVERTER_TITLE="J2735 DSRC decoder" -DHAVE_CONFIG_H -DJUNKTEST -D_DEFAULT_SOURCE  -DPDU=MessageFrame -I.
+OBJS=${ASN_MODULE_SOURCES:.c=.o} ${ASN_CONVERTER_SOURCES:.c=.o}
+
+all: MessageFrame.c $(TARGET)
+
+$(TARGET): ${OBJS}
+	$(CC) $(CFLAGS) -o $(TARGET) ${OBJS} $(LDFLAGS) $(LIBS)
+
+.SUFFIXES:
+.SUFFIXES: .c .o
+
+.c.o:
+	$(CC) $(CFLAGS) -o $@ -c $<
+
+clean:
+	rm -f $(TARGET)
+	rm -f $(OBJS)
+
+regen: regenerate-from-asn1-source
+
+regenerate-from-asn1-source:
+	../../asn1c/asn1c -S ../../skeletons -pdu=MessageFrame -fcompound-names -gen-PER ../j2735.asn1
+
+
+MessageFrame.c: ../sample.makefile.regen ../j2735.asn1
+	make regen-makefile
+	@touch MessageFrame.c
+	make
+
+regen-makefile:
+	TITLE="J2735 DSRC decoder" \
+	ASN1CMDOPTS="-fcompound-names -gen-PER" \
+	ASN1MODULES="../j2735.asn1" \
+	ASN1PDU=MessageFrame \
+	PROGNAME=j2735-dump \
+	CFLAGS="" \
+	../sample.makefile.regen
+
+check: ${TARGET} check-ber check-xer check-per
+	@echo ================
+	@echo All tests passed
+	@echo ================
+
+check-ber:
+	@if test -f sample-MessageFrame-1.[db]er ; then \
+	for f in sample-MessageFrame-*.[db]er; do \
+	for b in 1 17 33 980 8192; do \
+	echo "Recoding $$f into XER and back ($$b)..."; \
+	./${TARGET} -b $$b -iber -oxer $$f > ./.tmp.1.$$$$ || exit 2; \
+	./${TARGET} -b $$b -ixer -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \
+	diff ./.tmp.1.$$$$ ./.tmp.2.$$$$ || exit 4; \
+	rm -f ./.tmp.[12].$$$$; \
+	echo "Test junking $$f (please wait)..."; \
+	./${TARGET} -J0.0001 -n 1000 -b $$b -iber -onull $$f || exit 5; \
+	./${TARGET} -J0.001 -n 1000 -b $$b -iber -onull $$f || exit 6; \
+	done; done; fi
+
+check-xer:
+	@if test -f sample-MessageFrame-1.xer ; then \
+	for f in sample-MessageFrame-*.xer; do \
+	for b in 1 17 33 980 8192; do \
+	echo "Recoding $$f into DER and back ($$b)..."; \
+	./${TARGET} -b $$b -ixer -oder $$f > ./.tmp.1.$$$$ || exit 2; \
+	./${TARGET} -b $$b -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \
+	diff $$f ./.tmp.2.$$$$ || exit 4; \
+	rm -f ./.tmp.[12].$$$$; \
+	echo "Test junking $$f (please wait)..."; \
+	./${TARGET} -J0.0001 -n 1000 -b $$b -ixer -onull $$f || exit 5; \
+	./${TARGET} -J0.001 -n 1000 -b $$b -ixer -onull $$f || exit 6; \
+	done; done; fi
+
+check-per:
+	@if test -f sample-MessageFrame-1-nopad.per ; then \
+	for f in sample-MessageFrame-[1-9]-nopad.per; do \
+	for b in 1 17 33 980 8192; do \
+	echo "Recoding non-padded $$f into DER into XER and back ($$b)..."; \
+	./${TARGET} -b $$b -per-nopad -iper -oder $$f > ./.tmp.1.$$$$ || exit 2; \
+	./${TARGET} -b $$b -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \
+	./${TARGET} -b $$b -ixer -oder ./.tmp.2.$$$$ > ./.tmp.3.$$$$ || exit 4; \
+	diff ./.tmp.1.$$$$ ./.tmp.3.$$$$ || exit 5; \
+	rm -f ./.tmp.[123].$$$$; \
+	echo "Test junking $$f (please wait)..."; \
+	./${TARGET} -J0.0001 -n 1000 -b $$b -per-nopad -iper -onull $$f || exit 6; \
+	./${TARGET} -J0.001 -n 1000 -b $$b -per-nopad -iper -onull $$f || exit 7; \
+	done; done; fi
+	@if test -f sample-MessageFrame-1.per ; then \
+	for f in sample-*-[1-9].per; do \
+	pdu=`echo $$f | sed -E -e "s/sample-([A-Za-z-]+)-[0-9].*/\1/"`; \
+	for b in 1 17 33 980 8192; do \
+	echo "Recoding $$f into DER into XER and back ($$b)..."; \
+	./${TARGET} -b $$b -p $$pdu -iper -oder $$f > ./.tmp.1.$$$$ || exit 3; \
+	./${TARGET} -b $$b -p $$pdu -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 4; \
+	./${TARGET} -b $$b -p $$pdu -ixer -oper ./.tmp.2.$$$$ > ./.tmp.1.$$$$ || exit 5; \
+	diff $$f ./.tmp.1.$$$$ || exit 6; \
+	rm -f ./.tmp.[12].$$$$; \
+	echo "Test junking $$f (please wait)..."; \
+	./${TARGET} -J0.0001 -n 1000 -b $$b -iper -onull $$f || exit 7; \
+	./${TARGET} -J0.001 -n 1000 -b $$b -iper -onull $$f || exit 8; \
+	done; done; fi
+
+distclean: clean
+	rm -f $(ASN_MODULE_SOURCES)
+	rm -f $(ASN_MODULE_HEADERS)
+	rm -f $(ASN_CONVERTER_SOURCES) $(ASN_CONVERTER_HEADERS)
+	rm -f Makefile.am.sample
diff --git a/examples/sample.source.J2735/README b/examples/sample.source.J2735/README
new file mode 100644
index 0000000..d758310
--- /dev/null
+++ b/examples/sample.source.J2735/README
@@ -0,0 +1,38 @@
+
+GENERAL INFORMATION
+===================
+
+The SAE J2735-201603 Dedicated Short Range Communications (DSRC)
+Message Set Dictionary decoder.
+Invoking `make` will compile the ASN.1 specifications from the
+../j2735.asn1 file.
+
+THERE IS NO j2735.asn1 FILE THERE YET!
+
+OBTAINING THE J2735 SPECIFICATION
+=================================
+
+Go to http://standards.sae.org/j2735_201603/ and download the files.
+
+You should extract the ASN.1 module from there and save it
+as the ../j2735.asn1 file. The ../j2735.asn1 file should start with
+the following line
+	"DSRC DEFINITIONS AUTOMATIC TAGS ::="
+and end with the "END" token.
+Be careful not to copy any non-ASN.1 preambles from that .DOC file.
+
+After obtaining the j2735.asn1, type `make` in the directory containing
+this README file.
+
+j2735-dump USAGE
+================
+
+The j2735-dump utility may be used to dump the contents of the UPER-encoded
+DSRC message record file:
+
+	./j2735-dump j2735file.per	# Print as XML (BASIC-XER)
+
+The full list of recognized command line options may be obtained with
+
+	> ./j2735-dump -h
+
diff --git a/examples/sample.source.J2735/config.h b/examples/sample.source.J2735/config.h
new file mode 100644
index 0000000..2dda929
--- /dev/null
+++ b/examples/sample.source.J2735/config.h
@@ -0,0 +1,10 @@
+
+extern int opt_debug;
+
+#define	ASN_DEBUG(fmt, args...)	do {		\
+		if(opt_debug < 2) break;	\
+		fprintf(stderr, fmt, ##args);	\
+		fprintf(stderr, " (%s:%d)\n",	\
+			__FILE__, __LINE__);	\
+	} while(0)
+