@Override
	public void visitClass(XTreeClass _class) {
		XCodeGen code = getCodeExpr(_class);
		XCompiledPart part = null;
		if (_class.name != null) {
			part = new XCompiledPartVar(_class.name, scope, _class.name, _class.access);
			part.setup(this, code);
		}
		if (_class.superClasses == null) {
			code.addInstruction(_class, XOpcode.LOADN);
		} else {
			visit(_class.superClasses).setupAndGet(this, code);
		}
		code.addInstruction(_class, XOpcode.MAKE_CLASS, _class.name == null ? "<anonymouse>" : _class.name.name);
		XVar __class = new XVar(_class, "<class>");
		code.addInstruction(_class, __class);
		this.scope = new XClassScope(this.scope, __class);
		boolean dead = false;
		for (XTreeStatement statement : _class.init.statements) {
			if (dead) {
				addDiagnostic(statement, "dead.code");
			} else {
				XCompiledPart p = visit(statement);
				if (p.isDead()) {
					dead = true;
				}
				p.asStatement(this, code);
			}
		}
		treePart.setDead(dead);
		this.scope = this.scope.getParent();
		if (part != null) {
			part.set(this, code);
		}
	}