} else if ( OPTIMIZE_WITHOUT_ANNOS && alt_count != 1 && !contains_placeholder) {
} else if (false && alt_count != 1 && !contains_placeholder) {
	private void genIsAlt(Type type, Alternative alt) {		String type_id = StringConversions.makeIdentifier(type.getId());		String type_name = buildTypeName(type);		String decl =			"inline ATbool "				+ buildIsAltName(type, alt)				+ "("				+ type_name				+ " arg)";		String pattern;		StringBuffer match_code = new StringBuffer();		boolean contains_placeholder = alt.containsPlaceholder();		int alt_count = type.getAlternativeCount();		boolean inverted = false;		//{{{ When OPTIMIZE_WITHOUT_ANNOS: check for patterns without holes		if (OPTIMIZE_WITHOUT_ANNOS && alt_count == 2 && contains_placeholder) {			Iterator iter = type.alternativeIterator();			while (iter.hasNext()) {				Alternative cur = (Alternative) iter.next();				if (cur != alt && !cur.containsPlaceholder()) {					inverted = true;					alt = cur;					contains_placeholder = false;				}			}		}		//}}}		//{{{ Create match_code		pattern =			prefix				+ "pattern"				+ type_id				+ StringConversions.makeCapitalizedIdentifier(alt.getId());		if (!OPTIMIZE_WITHOUT_ANNOS || contains_placeholder) {			match_code.append("ATmatchTerm((ATerm)arg, " + pattern);			Iterator fields = type.altFieldIterator(alt.getId());			while (fields.hasNext()) {				fields.next();				match_code.append(", NULL");			}			match_code.append(")");		} else {			match_code.append("ATisEqual((ATerm)arg, " + pattern + ")");		}		//}}}		hprintln(decl + ";");		printFoldOpen(decl);		println(decl);		println("{");		if (OPTIMIZE_WITHOUT_ANNOS && inverted) {			println("  return !(" + match_code + ");");		} else if (			OPTIMIZE_WITHOUT_ANNOS				&& alt_count != 1				&& !contains_placeholder) {			println("  return " + match_code + ";");		} else {			AlternativeList alts_left = type.getAlternatives();			alts_left.remove(alt);			alt_count = alts_left.size();			int pat_type = alt.getPatternType();			alts_left.keepByType(pat_type);			if (alts_left.size() != alt_count) {				//{{{ Check term types				println(					"  if (ATgetType((ATerm)arg) != "						+ getATermTypeName(pat_type)						+ ") {");				println("    return ATfalse;");				println("  }");				//}}}			}			if (pat_type == ATerm.APPL) {				//{{{ Check function symbols				if (alt instanceof ATermAppl) {					AFun afun = ((ATermAppl) alt.buildMatchPattern()).getAFun();					alt_count = alts_left.size();					alts_left.keepByAFun(afun);					if (alts_left.size() < alt_count) {						println(							"  if (ATgetAFun((ATermAppl)arg) != ATgetAFun("								+ pattern								+ ")) {");						println("    return ATfalse;");						println("  }");					}				}				//}}}			} else if (pat_type == ATerm.LIST) {				//{{{ Check list length				ATermList matchPattern = (ATermList) alt.buildMatchPattern();				if (matchPattern.isEmpty()) {					alts_left.clear();					println("  if (!ATisEmpty((ATermList)arg)) {");					println("    return ATfalse;");					println("  }");				} else if (					!matchPattern.equals(						matchPattern.getFactory().parse("[<list>]"))) {					alts_left.removeEmptyList();					println("  if (ATisEmpty((ATermList)arg)) {");					println("    return ATfalse;");					println("  }");				}				//}}}			}			if (alts_left.size() == 0) {				println("#ifndef DISABLE_DYNAMIC_CHECKING");				println("  assert(arg != NULL);");				println("  assert(" + match_code + ");");				println("#endif");				println("  return ATtrue;");			} else {				println("  {");				println("    static ATerm last_arg = NULL;");				println("    static int last_gc = -1;");				println("    static ATbool last_result;");				println();				println("    assert(arg != NULL);");				println();				println(					"    if (last_gc != ATgetGCCount() || "						+ "(ATerm)arg != last_arg) {");				println("      last_arg = (ATerm)arg;");				println("      last_result = " + match_code + ";");				println("      last_gc = ATgetGCCount();");				println("    }");				println();				println("    return last_result;");				println("  }");			}		}		println("}");		printFoldClose();	}