public void SetElementValue(int index, DHJassValue value) { DHJassValue result; if (!array.TryGetValue(index, out result) || result == null || (result is DHJassUnusedType && !(value is DHJassUnusedType)) || (!(result is DHJassUnusedType) && value is DHJassUnusedType)) { result = value.GetNew(); array[index] = result; } result.SetValue(value); }