public static bool ob_start(Context ctx, Delegate filter = null, int chunkSize = 0, bool erase = true)
{
if (chunkSize != 0)
//PhpException.ArgumentValueNotSupported("chunkSize", "!= 0");
throw new NotSupportedException("chunkSize != 0");
if (!erase)
//PhpException.ArgumentValueNotSupported("erase", erase);
throw new NotSupportedException("erase == false");
ctx.BufferedOutput.IncreaseLevel();
bool result = true;
// skips filter setting if filter is not specified or valid:
if (filter != null) // && (result = filter.Bind())) // TODO: PhpCallback.Bind -> Delegate, done by caller
ctx.BufferedOutput.SetFilter(filter);
ctx.IsOutputBuffered = true;
return result;
}