throw new ApplicationError(that.getClass().getName());
throw Debug.abort(that.getClass().getName());
    private Item drop(Item that) {	switch (that) {	case VoidItem():	case SelfItem():	case LiteralItem(_):	case ArgItem(_):	case LocalItem(_):	case StaticItem(_):	    break;	case StackItem():	    code.Emit(OpCodes.Pop);	    break; 	case SelectItem(Item qual, _): 	    drop(qual); 	    break; 	case CondItem(Test test, _, _):	    switch (test) {	    case False:	    case True:		break;	    case Bool(_):		code.Emit(OpCodes.Pop);		break;	    case And(_):	    case Or(_):		drop(load(that));		break;	    case Binary(_, _):		code.Emit(OpCodes.Pop);		code.Emit(OpCodes.Pop);		break;	    default :		throw new ApplicationError(that.getClass().getName());	    } 	    break;	default:	    drop(load(that));	}	return items.VoidItem();    }