private static void VisitEntryOnWalk(Context ctx,
KeyValuePair<IntStringKey, PhpValue> entry,
IDictionary<IntStringKey, PhpValue> array,
IPhpCallable callback, PhpValue[] args)
{
Debug.Assert(args[0].IsAlias);
// fills arguments for the callback:
args[0].Alias.Value = entry.Value.GetValue();
args[1] = PhpValue.Create(entry.Key);
// invoke callback:
callback.Invoke(ctx, args);
// loads a new value from a reference:
if (entry.Value.IsAlias)
{
entry.Value.Alias.Value = args[0].Alias.Value;
}
else
{
array[entry.Key] = args[0].Alias.Value;
}
}