@Override
	public Descriptor compile(SymbolTable symbolTable) {
		Descriptor d = null;

		if (subject instanceof IdentNode) {
			d = symbolTable.descriptorFor(((IdentNode) subject).getIdentName());
		}

		if (d instanceof IntConstDescriptor) {
			write("PUSHI, " + ((IntConstDescriptor) d).value());
		} else if (subject instanceof RecordSelectorNode || subject instanceof ArraySelectorNode || d instanceof RecordDescriptor || d instanceof ArrayDescriptor) {
			if (d == null) {
				d = subject.compile(symbolTable);
			} else {
				subject.compile(symbolTable);
			}
			write("CONT, " + d.size());
			return d;
		} else {
			subject.compile(symbolTable);
			write("CONT, 1");
		}

		return null;
	}