public void visit_invokespecial(final Instruction inst) {
		CallVisitor.db("\n    Visiting call: " + inst);

		// Recall that invokespecial is used to call constructors, private
		// methods, and "super" methods. There is no dynamic dispatch for
		// special methods.
		final MemberRef callee = (MemberRef) inst.operand();

		MethodEditor calleeMethod = null;

		try {
			calleeMethod = cg.context.editMethod(callee);

		} catch (final NoSuchMethodException ex1) {
			System.err.println("** Couldn't find method: " + callee);
			System.exit(1);
		}

		if (calleeMethod.isSynchronized() || calleeMethod.isNative()) {
			// Calls to synchronized and native methods are virtual
			cg.doVirtual(caller, callee);

		} else {
			// Calls to everything else (superclass methods, private
			// methods, etc.) do not involve a dynamic dispatch and can be
			// treated like a static method.
			cg.addCall(caller, callee);
			cg.worklist.add(callee);
		}

		cg.context.release(calleeMethod.methodInfo());
	}