inline void example_print_error_common(
	Error& error,
	std::ostream& errstr
)
{
	example_print_std_error_common(error, errstr);
	errstr << "in '" << error.GLSymbol() << "'" << std::endl;
	errstr << "at [";
	errstr << error.File() << ":" << error.Line();
	errstr << "]" << std::endl;

	bool nl = false;
	if(std::strlen(error.ClassName()))
	{
		errstr << error.ClassName();
		nl |= true;
	}
	if(!error.ObjectDescription().empty())
	{
		if(nl) errstr << " ";
		errstr << "'" << error.ObjectDescription() << "'";
		nl |= true;
	}
	if(std::strlen(error.BindTarget()))
	{
		if(!nl) errstr << "Object";
		errstr << " bound to '" << error.BindTarget() << "'";
		nl |= true;
	}
	if(nl) errstr << std::endl;

	auto i = error.Properties().begin(), e = error.Properties().end();
	if(i != e)
	{
		errstr << "Properties: " << std::endl;
		while(i != e)
		{
			errstr << "<" << i->first << "='" << i->second << "'>";
			++i;
			if(i != e) errstr << ", ";
			else errstr << ".";
		}
		errstr << std::endl;
	}
}