/// <inheritdoc/>
        public override LineSegmentTheoremObject Remap(IReadOnlyDictionary <ConfigurationObject, ConfigurationObject> mapping, bool flattenObjectsFromPoints = false)
        {
            // Map particular objects
            var mappedPoint1 = Point1.Remap(mapping, flattenObjectsFromPoints);
            var mappedPoint2 = Point2.Remap(mapping, flattenObjectsFromPoints);

            // Reconstruct based on the fact whether remapping could be done
            return(mappedPoint1 != null && mappedPoint2 != null
                   // If yes, do the reconstruction
                ? new LineSegmentTheoremObject(mappedPoint1, mappedPoint2)
                   // If no, return null
                : null);
        }