public void visit_dup2_x1(final Instruction inst) {
		// If the top two values are of category 1, then dup them and put
		// them three down. Otherwise, the top two values are of category
		// 2 and the top value is put two down.
		final Set top = atDepth(0);

		final int category = checkCategory(top);

		if (category == 1) {
			final Set top1 = atDepth(1);
			checkCategory(top1, 1);

			// Form 1: Dup top two values and put three down

			final int n = currStack.size() - 3;
			currStack.add(n, top1);
			currStack.add(n, top);

		} else {
			final Set top1 = atDepth(1);
			checkCategory(top1, 1);

			// Form 2: Dup top value and put two down

			currStack.add(currStack.size() - 2, new HashSet(top));
		}
	}