public static IntermediateNode cons(Object... constituents)
	{
		LinkedList<IntermediateNode> newConstituents = new LinkedList<IntermediateNode>();
		for(Object constituent : constituents)
		{
			if(constituent != null && constituent instanceof IntermediateNode)
			{
				newConstituents.addFirst((IntermediateNode) constituent);
			}
		}
		if(newConstituents.isEmpty()) return null;
		else if(newConstituents.size() == 1) return newConstituents.getFirst();
		IntermediateNode first = newConstituents.poll();
		IntermediateNode second = newConstituents.poll();
		IntermediateConsNode rv = new IntermediateConsNode(second,first);
		while(!newConstituents.isEmpty())
		{
			rv = new IntermediateConsNode(newConstituents.poll(),rv);
		}
		return rv;
	}