@SuppressWarnings("unchecked")
	public static IntermediateNode visitPreambleNode(Node n,String inheritance,CompilerLogger logger)
	throws CopperException
	{
		if(!n.getParentNode().getNodeName().equals("copperspec"))
		{
			formalError(logger,n,"missing","copperspec","parent");
			return null;
		}
		String code = "";
		if(n.getAttributes().getNamedItem("code") != null)
		{
			code = n.getAttributes().getNamedItem("code").getTextContent();
		}
		else
		{
			for(int i = 0;i < n.getChildNodes().getLength();i++)
			{
				if(n.getChildNodes().item(i).getNodeName().equals("code"))
				{
					if(code.equals("")) code = n.getChildNodes().item(i).getTextContent();
					else
					{
						formalError(logger,n,"has too many","code","children");
						return null;
					}
				}
			}
			if(code == null)
			{
				formalError(logger,n,"missing","code","attribute or child");
				return null;
			}
		}
	     return new IntermediateSymbolNode(
		            IntermediateSymbolSort.DIRECTIVE,
		            Symbol.symbol(" startCode "),
		            Pair.cons("location",Pair.cons(getPos(),null)),
		            Pair.cons("code",Pair.cons(getPos(),(Object) code)));		
	}