TRIO_PRIVATE void TrioInStreamCustom TRIO_ARGS2((self, intPointer), trio_class_t* self,
                                                int* intPointer)
{
	trio_custom_t* data;

	assert(VALID(self));
	assert(VALID(self->location));

	self->actually.cached = 0;

	data = (trio_custom_t*)self->location;

	self->current = (data->stream.in == NULL) ? NIL : (data->stream.in)(data->closure);

	if (self->current == NIL)
	{
		self->current = EOF;
	}
	else
	{
		self->processed++;
		self->actually.cached++;
	}

	if (VALID(intPointer))
	{
		*intPointer = self->current;
	}
}
TRIO_PRIVATE void TrioInStreamCustom TRIO_ARGS2((self, intPointer), trio_class_t* self,
                                                int* intPointer)
{
	trio_custom_t* data;

	assert(VALID(self));
	assert(VALID(self->location));

	self->actually.cached = 0;

	data = (trio_custom_t*)self->location;

	self->current = (data->stream.in == NULL) ? NIL : (data->stream.in)(data->closure);

	if (self->current == NIL)
	{
		self->current = EOF;
	}
	else
	{
		self->processed++;
		self->actually.cached++;
	}

	if (VALID(intPointer))
	{
		*intPointer = self->current;
	}
}