public Object add(Object prefix, Object output) {assert !(prefix instanceof List);if (!(output instanceof List)) {return outputs.add((T) prefix, (T) output);} else {List<T> outputList = (List<T>) output;List<T> addedList = new ArrayList<>(outputList.size());for(T _output : outputList) {addedList.add(outputs.add((T) prefix, _output));}return addedList;}}

public override object Add(object prefix, object output){Debug.Assert(!(prefix is IList));if (!(output is IList)){return outputs.Add((T)prefix, (T)output);}else{IList outputList = (IList)output;IList<T> addedList = new JCG.List<T>(outputList.Count);foreach (object _output in outputList){addedList.Add(outputs.Add((T)prefix, (T)_output));}return addedList;}}
