public static bool IsValid(string candidate)
        {
            string[] candidateParts = candidate.Split('/');

            if (candidateParts.Length != 2)
            {
                return(false);
            }

            var pointPart      = candidateParts[0];
            var speedLevelPart = candidateParts[1];

            // Check point part for each category and check speed level part.
            return(SpeedLevel.IsValid(speedLevelPart) &&
                   (NavaidPoint.IsValid(pointPart) ||
                    CoordinatePoint.IsValid(pointPart) ||
                    NamedPoint.IsValid(pointPart)));
        }
 public ChangeOfSpeedLevelPoint(SignificantPoint point, SpeedLevel changeOfSpeedLevel)
     : base(string.Format(CultureInfo.InvariantCulture, "{0}/{1}", point.Representation, changeOfSpeedLevel.Representation))
 {
     _point = point;
     _changeOfSpeedLevel = changeOfSpeedLevel;
 }