meta tables

Okay so i recently made a inventory system and you guys helped me iron out the bugs well that was nice but now my community is asking for more so im upgrading stuff such as the inventory item creation and i was wondering if you guys could help me figure out item meta tables

my friend gave me an example but i don’t know how i would start to use/make it


-- BASE ATTRIBUTES appear at the top of the tooltip and are used internally by the game.
Item.Name="Chinese Food" -- Name.
Item.Weight=1 -- Weight.
Item.MaxStack=false -- FALSE for infinite, or any number
Item.Cool=false -- FALSE for no cooldown, otherwise a time limit to how often you can use the item

Item.Model='/weapons/crowbar.mdl' -- 3D model for the weapon.

-- ATTRIBUTES appear in the tooltip when you're hovering over an object.  They're purely cosmetic.

--	{color,text,color,...} OR
--	{text,text,color,text,...} OR
--	any other mix of color/text

	{Color(0,255,0),"Restores 40 hunger."},
	{Color(255,0,0),"Tastes like shit."}	

-- CONTEXT is the dropdown menu that appears when you click on an item.

	Drop=true, -- Drop can be a function or a boolean.  If it's a boolean, call the default drop function, otherwise the function it's defined as.
	Use='weapon_bg_g3', -- Function or a string.  If it's a string, check if the player has a weapon by that classname, otherwise give them one.
	['Do something else']=function() print('Hello world!') end -- Appears as 'Do something else' on the context menu.

-- Meta is initialized as a blank variable and can contain anything.  Any item with meta variables is displayed as a seperate item and does not stack.

and my current

IA.Items = {}
IA.Items.Stored = {}

function IA.Items:RegisterItem( itemUnique, itemTable )
	self.Stored[itemUnique] = itemTable
	self.Stored[itemUnique].Name = itemTable.Name or ""
	self.Stored[itemUnique].Info = itemTable.Info or ""
	self.Stored[itemUnique].Model = itemTable.Model or ""
	self.Stored[itemUnique].useAble = itemTable.useAble or 1
	self.Stored[itemUnique].dropAble = itemTable.dropAble or 1
	self.Stored[itemUnique].Weight = itemTable.Weight or 1
	self.Stored[itemUnique].max=itemTable.max or 2147483647
	self.Stored[itemUnique].dist = itemTable.dist or 1.2
	if (SERVER) then
		self.Stored[itemUnique].UseItem = itemTable.UseItem or function( ply ) end
		self.Stored[itemUnique].DropItem = itemTable.DropItem or function( ply ) end
		print("[Inventory Addon] - Registered item '" .. itemTable.Name .. "'.")

Maybe this is a better method: