public IValue Add(Context context, IValue value) { if (value is ListValue) { ListValue result = new ListValue(type.GetItemType()); result.AddRange(this); result.AddRange((ListValue)value); return(result); } else if (value is SetValue) { ListValue result = new ListValue(type.GetItemType()); result.AddRange(this); result.AddRange(((SetValue)value).getItems()); return(result); } else { throw new SyntaxError("Illegal : List + " + value.GetType().Name); } }