public QaMeasuresAtPoints(
            [Doc(nameof(DocStrings.QaMeasuresAtPoints_pointClass))][NotNull]
            IFeatureClass pointClass,
            [Doc(nameof(DocStrings.QaMeasuresAtPoints_expectedMValueExpression))][CanBeNull]
            string
            expectedMValueExpression,
            [Doc(nameof(DocStrings.QaMeasuresAtPoints_lineClasses))][NotNull]
            IList <IFeatureClass> lineClasses,
            [Doc(nameof(DocStrings.QaMeasuresAtPoints_searchDistance))]
            double searchDistance,
            [Doc(nameof(DocStrings.QaMeasuresAtPoints_mTolerance))] double mTolerance,
            [Doc(nameof(DocStrings.QaMeasuresAtPoints_lineMSource))]
            LineMSource lineMSource,
            [Doc(nameof(DocStrings.QaMeasuresAtPoints_requireLine))]
            bool requireLine,
            [Doc(nameof(DocStrings.QaMeasuresAtPoints_ignoreUndefinedExpectedMValue))]
            bool
            ignoreUndefinedExpectedMValue,
            [Doc(nameof(DocStrings.QaMeasuresAtPoints_matchExpression))][CanBeNull]
            string matchExpression)
            : base(
                CastToTables((IEnumerable <IFeatureClass>) Union(new[] { pointClass }, lineClasses)))
        {
            Assert.NotNull(pointClass, "pointClass");
            Assert.NotNull(lineClasses, "lineClasses");
            Assert.True(searchDistance >= 0, "SearchDistance < 0");

            _tableCount = lineClasses.Count + 1;
            _pointClass = pointClass;
            _expectedMValueExpression = StringUtils.IsNotEmpty(expectedMValueExpression)
                                                            ? expectedMValueExpression
                                                            : null;

            _lineMSource = lineMSource;
            _requireLine = requireLine;
            _ignoreUndefinedExpectedMValue = ignoreUndefinedExpectedMValue;
            _matchExpression = StringUtils.IsNotEmpty(matchExpression)
                                                   ? matchExpression
                                                   : null;

            SearchDistance = searchDistance;

            _spatialReference = ((IGeoDataset)pointClass).SpatialReference;

            _mTolerance = GetMTolerances(lineClasses, mTolerance, _tableCount);
        }
 public QaMeasuresAtPoints(
     [Doc(nameof(DocStrings.QaMeasuresAtPoints_pointClass))][NotNull]
     IFeatureClass pointClass,
     [Doc(nameof(DocStrings.QaMeasuresAtPoints_expectedMValueExpression))][CanBeNull]
     string
     expectedMValueExpression,
     [Doc(nameof(DocStrings.QaMeasuresAtPoints_lineClasses))][NotNull]
     IList <IFeatureClass> lineClasses,
     [Doc(nameof(DocStrings.QaMeasuresAtPoints_searchDistance))]
     double searchDistance,
     [Doc(nameof(DocStrings.QaMeasuresAtPoints_mTolerance))] double mTolerance,
     [Doc(nameof(DocStrings.QaMeasuresAtPoints_lineMSource))]
     LineMSource lineMSource,
     [Doc(nameof(DocStrings.QaMeasuresAtPoints_requireLine))]
     bool requireLine)
     : this(
         pointClass, expectedMValueExpression, lineClasses, searchDistance, mTolerance,
         // ReSharper disable once IntroduceOptionalParameters.Global
         lineMSource, requireLine, false, null)
 {
 }