public override List <ExtractResult> Extract(string source)
        {
            List <ExtractResult> results;

            if ((this.Options & NumberOptions.NoProtoCache) != 0)
            {
                results = base.Extract(source);
            }
            else
            {
                var key = GenKey(source);

                results = ResultsCache.GetOrCreate(key, () => base.Extract(source));
            }

            return(results);
        }
        public List <ExtractResult> Extract(string text, DateObject reference)
        {
            List <ExtractResult> results;

            if ((this.config.Options & DateTimeOptions.NoProtoCache) != 0)
            {
                results = ExtractImpl(text, reference);
            }
            else
            {
                var key = (keyPrefix, text, reference);

                results = ResultsCache.GetOrCreate(key, () => ExtractImpl(text, reference));
            }

            return(results);
        }