/**
         * Build an autofill {@link Dataset} using saved data and the client's AssistStructure.
         */
        private bool BindDataset(Dictionary <string, FieldTypeWithHeuristics> fieldTypesByAutofillHint,
                                 DatasetWithFilledAutofillFields datasetWithFilledAutofillFields,
                                 Dataset.Builder datasetBuilder)
        {
            MutableBoolean setValueAtLeastOnce = new MutableBoolean(false);

            var filledAutofillFieldsByTypeName =
                datasetWithFilledAutofillFields
                .filledAutofillFields
                .ToDictionary(x => x.GetFieldTypeName(), x => x);

            mClientParser.Parse(new BindDatasetNodeProcessor
            {
                datasetBuilder                 = datasetBuilder,
                setValueAtLeastOnce            = setValueAtLeastOnce,
                fieldTypesByAutofillHint       = fieldTypesByAutofillHint,
                filledAutofillFieldsByTypeName = filledAutofillFieldsByTypeName,
                datasetAdapter                 = this
            });

            return(setValueAtLeastOnce.Value);
        }
        /**
         * Parses a client view structure and build a dataset (in the form of a
         * {@link DatasetWithFilledAutofillFields}) from the view metadata found.
         */
        private DatasetWithFilledAutofillFields BuildDatasetForPartition(AutofillDataset dataset,
                                                                         int partition)
        {
            DatasetWithFilledAutofillFields datasetWithFilledAutofillFields = new DatasetWithFilledAutofillFields();

            datasetWithFilledAutofillFields.autofillDataset = dataset;
            mClientParser.Parse(new PartitionNodeProcessor
            {
                that      = this,
                partition = partition,
                datasetWithFilledAutofillFields = datasetWithFilledAutofillFields
            });
            return(datasetWithFilledAutofillFields);
        }