public LuaValue GetField(string key)
{
var table = this as LuaTable;
if (table == null) throw new Exception("value is not table");
var found = table.Values.FirstOrDefault(kvp => kvp.Key is LuaString && ((LuaString) kvp.Key).Value == key);
return found.Value;
}