anchor.diff:   */
   /obj/item/udder/proc/generate()
   	if(prob(5))
  -		reagents.add_reagent(/datum/reagent/consumable/milk, rand(5, 10))
  +		reagents.add_reagent(reagent_produced_typepath, rand(5, 10))
   		if(on_generate_callback)
   			on_generate_callback.Invoke(reagents.total_volume, reagents.maximum_volume)
   
  
positive.code:  * also useful for changing initial amounts in reagent holder (cows start with milk, gutlunches start empty)
   */
  /obj/item/udder/proc/initial_conditions()
  	reagents.add_reagent(/datum/reagent/consumable/milk, 20)
  	START_PROCESSING(SSobj, src)
  
  /**
  
negative.code: 	///optional proc to callback to when the udder is milked
  	var/datum/callback/on_milk_callback
  
  //udder_type and reagent_produced_typepath are typepaths, not reference
  /datum/component/udder/Initialize(udder_type = /obj/item/udder, on_milk_callback, on_generate_callback, reagent_produced_typepath = /datum/reagent/consumable/milk)
  	if(!isliving(parent)) //technically is possible to drop this on carbons... but you wouldn't do that to me, would you?
  		return COMPONENT_INCOMPATIBLE
  	udder = new udder_type(null, parent, on_generate_callback, reagent_produced_typepath)
  	src.on_milk_callback = on_milk_callback
  
  /datum/component/udder/RegisterWithParent()
  