protected boolean deconstructRecipeInto(final Item I, final Recipe R)
	{

		if((I==null)||(R==null))
			return false;
		if(!(this instanceof ItemCraftor))
			return false;
		final ItemCraftor C=(ItemCraftor)this;
		if(!C.supportsDeconstruction())
			return false;
		if(!C.mayICraft(I))
			return false;
		final List<String> existingRecipes=new XVector<String>(R.getRecipeCodeLines());
		if(R.getTotalRecipePages() <=existingRecipes.size())
			return false;
		try
		{
			existingRecipes.add(CMLib.ableParms().makeRecipeFromItem(C, I));
			R.setRecipeCodeLines(existingRecipes.toArray(new String[0]));
			R.setCommonSkillID( ID() );
		}
		catch(final CMException cme)
		{
			Log.errOut("CraftingSkill",cme.getMessage());
			return false;
		}
		return true;
	}