internal bool CheckResult(VariableDef[] variableDefs, ConstraintDef[] constraintDefs,
                            NeighborDef[] neighborDefs, double[] expectedPositions, bool checkResults)
        {
            SetVariableExpectedPositions(variableDefs, expectedPositions);

            int violationCount;
            return CheckResult(variableDefs, constraintDefs, neighborDefs, checkResults, out violationCount);
        }
        //
        // These overloads work with the local Test*() routines.
        //
        bool CheckResult(VariableDef[] variableDefs, ConstraintDef[] constraintDefs
                            , NeighborDef[] rgNeighborDefs, double[] expectedPositionsX, bool fCheckResults)
        {
            for (uint id = 0; id < variableDefs.Length; ++id)
            {
                variableDefs[id].SetExpected(id, expectedPositionsX[id]);
            }

            return CheckResult(variableDefs, constraintDefs, rgNeighborDefs, fCheckResults);
        }