public static MutatorsConfigurator <TRoot, TChild, string> IsLike <TRoot, TChild>(
            this MutatorsConfigurator <TRoot, TChild, string> configurator,
            string pattern,
            Expression <Func <TChild, string, MultiLanguageTextBase> > message,
            int priority = 0,
            ValidationResultType type = ValidationResultType.Error)
        {
            var pathToValue = (Expression <Func <TRoot, string> >)configurator.PathToValue.ReplaceEachWithCurrent();
            var pathToChild = (Expression <Func <TRoot, TChild> >)configurator.PathToChild.ReplaceEachWithCurrent();

            configurator.SetMutator(RegexValidatorConfiguration.Create(MutatorsCreator.Sharp, priority, pathToValue, null, message.Merge(pathToChild, pathToValue), pattern, type));
            return(configurator);
        }
        public static MutatorsConfigurator <TRoot, TChild, string> IsLike <TRoot, TChild>(
            this MutatorsConfigurator <TRoot, TChild, string> configurator,
            string pattern,
            Expression <Func <TChild, string, MultiLanguageTextBase> > message,
            int priority = 0,
            ValidationResultType type = ValidationResultType.Error)
        {
            var methodReplacer = new MethodReplacer(MutatorsHelperFunctions.EachMethod, MutatorsHelperFunctions.CurrentMethod);
            var pathToValue    = (Expression <Func <TRoot, string> >)methodReplacer.Visit(configurator.PathToValue);
            var pathToChild    = (Expression <Func <TRoot, TChild> >)methodReplacer.Visit(configurator.PathToChild);

            configurator.SetMutator(RegexValidatorConfiguration.Create(MutatorsCreator.Sharp, priority, pathToValue, null, message.Merge(pathToChild, pathToValue), pattern, type));
            return(configurator);
        }