public override void ProcessMap(IOrderedCompositeSpec spec, JObject inputMap, WalkedPath walkedPath, JObject output, JObject context)
 {
     // Iterate over the whole entrySet rather than the keyset with follow on gets of the values
     foreach (var inputEntry in inputMap)
     {
         ApplyKeyToComputed(spec.GetComputedChildren(), walkedPath, output, inputEntry.Key, inputEntry.Value, context);
     }
 }
        public override void ProcessList(IOrderedCompositeSpec spec, JArray inputList, WalkedPath walkedPath, JObject output, JObject context)
        {
            int?originalSize = walkedPath.LastElement().OrigSize;

            for (int index = 0; index < inputList.Count; index++)
            {
                JToken subInput  = inputList[index];
                string subKeyStr = index.ToString();
                JToken subInputOptional;
                if (subInput == null && originalSize.HasValue && index >= originalSize.Value)
                {
                    subInputOptional = null;
                }
                else
                {
                    subInputOptional = subInput;
                }

                ApplyKeyToComputed(spec.GetComputedChildren(), walkedPath, output, subKeyStr, subInputOptional, context);
            }
        }
 public override void ProcessScalar(IOrderedCompositeSpec spec, string scalarInput, WalkedPath walkedPath, JObject output, JObject context)
 {
     ApplyKeyToComputed(spec.GetComputedChildren(), walkedPath, output, scalarInput, null, context);
 }