private void outOther(Scope scope, List<String> outerSels, NodeInfo node) throws IOException {
		if (node instanceof VariableDefinition) {
			final VariableDefinition vdef = (VariableDefinition)node;
			scope.setVariable(vdef.getName(), evalDefinition(scope, vdef));
				//spec: evaluate when it is defined (not when it is used)
		} else if (node instanceof FunctionDefinition) {
			final FunctionDefinition fd = (FunctionDefinition)node;
			scope.setVariable(fd.getName(), fd);
		} else if (node instanceof MixinDefinition) {
			final MixinDefinition fd = (MixinDefinition)node;
			scope.setVariable(fd.getName(), fd);
		} else if (node instanceof IfDefinition) { //assume not in a rule (outerSel shall be null)
			for (NodeInfo child: node.getChildren()) {
				final BlockDefinition block = (BlockDefinition)child;
				final Expression expr = block.getCondition();
				if (expr == null || isTrue(scope, expr)) {
					outChildren(scope, outerSels, block);
					break; //done
				}
			}
		} else if (node instanceof MediaDefinition) {
			write("@media ");
			write(((MediaDefinition)node).getRange());
			write("{\n");
			outChildren(scope, outerSels, node);
			write ("}\n");
		} else if (node instanceof RawValue) {
			write(((RawValue)node).getValue());
		} else {
			throw error("unknown "+node, node);
		}
	}