/// <summary>
/// Emits name as string. Caches the result if holder is provided, or loads evaluated name if holder was initialized already.
/// </summary>
public static void EmitName(InstanceCacheHolder holderOrNull, CodeGenerator cg, BoundExpression name)
{
Contract.ThrowIfNull(cg);
Contract.ThrowIfNull(name);
if (holderOrNull != null)
{
holderOrNull.EmitName(cg, name);
}
else
{
cg.EmitConvert(name, cg.CoreTypes.String);
}
}