public static Cons expandMarkupTagFunction(Cons tagAndStream, Cons body, boolean xmlP) {
    { Stella_Object tag = tagAndStream.value;
      Symbol tagvar = null;
      String tagvalue = null;
      Stella_Object stream = tagAndStream.rest.value;
      Stella_Object eolargument = tagAndStream.rest.rest.value;
      boolean eolP = (eolargument != null) &&
          BooleanWrapper.coerceWrappedBooleanToBoolean(Stella_Object.coerceToBoolean(eolargument));

      if (body == Stella.NIL) {
        { Surrogate testValue000 = Stella_Object.safePrimaryType(tag);

          if (Surrogate.subtypeOfStringP(testValue000)) {
            { StringWrapper tag000 = ((StringWrapper)(tag));

              if (eolP) {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.cons(StringWrapper.wrapString("<" + tag000.wrapperValue + ((xmlP ? "/>" : ">"))), Cons.cons(Stella.SYM_STELLA_EOL, Stella.NIL)), Stella.NIL)))));
              }
              else {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.cons(StringWrapper.wrapString("<" + tag000.wrapperValue + ((xmlP ? "/>" : ">"))), Stella.NIL), Stella.NIL)))));
              }
            }
          }
          else if (Surrogate.subtypeOfP(testValue000, Stella.SGT_STELLA_OBJECT)) {
            { Stella_Object tag000 = ((Stella_Object)(tag));

              if (eolP) {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("<"), Cons.cons(tag000, Cons.cons(Cons.cons((xmlP ? StringWrapper.wrapString("/>") : StringWrapper.wrapString(">")), Cons.cons(Stella.SYM_STELLA_EOL, Stella.NIL)), Stella.NIL)))), Stella.NIL)))));
              }
              else {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("<"), Cons.cons(tag000, Cons.cons(Cons.cons((xmlP ? StringWrapper.wrapString("/>") : StringWrapper.wrapString(">")), Stella.NIL), Stella.NIL)))), Stella.NIL)))));
              }
            }
          }
          else {
            { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

              stream000.nativeStream.print("`" + testValue000 + "' is not a valid case option");
              throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
            }
          }
        }
      }
      else {
        { Surrogate testValue001 = Stella_Object.safePrimaryType(tag);

          if (Surrogate.subtypeOfStringP(testValue001)) {
            { StringWrapper tag000 = ((StringWrapper)(tag));

              tagvalue = tag000.wrapperValue;
              if (eolP) {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_PROGN, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.cons(StringWrapper.wrapString("<" + tagvalue + ">"), Stella.NIL), Stella.NIL)))), Cons.cons(body.concatenate(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.cons(StringWrapper.wrapString("</" + Native.string_subsequence(tagvalue, 0, Native.string_position(tagvalue, ' ', 0)) + ">"), Cons.cons(Stella.SYM_STELLA_EOL, Stella.NIL)), Stella.NIL)))), Stella.NIL), Stella.NIL), Stella.NIL)))));
              }
              else {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_PROGN, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.cons(StringWrapper.wrapString("<" + tagvalue + ">"), Stella.NIL), Stella.NIL)))), Cons.cons(body.concatenate(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.cons(StringWrapper.wrapString("</" + Native.string_subsequence(tagvalue, 0, Native.string_position(tagvalue, ' ', 0)) + ">"), Stella.NIL), Stella.NIL)))), Stella.NIL), Stella.NIL), Stella.NIL)))));
              }
            }
          }
          else if (Surrogate.subtypeOfSymbolP(testValue001)) {
            { Symbol tag000 = ((Symbol)(tag));

              if (eolP) {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_PROGN, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("<"), Cons.cons(tag000, Cons.cons(Cons.cons(StringWrapper.wrapString(">"), Stella.NIL), Stella.NIL)))), Stella.NIL)))), Cons.cons(body.concatenate(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("</"), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_SUBSEQUENCE, Cons.cons(tag000, Cons.cons(Cons.list$(Cons.cons(IntegerWrapper.wrapInteger(0), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_POSITION, Cons.cons(tag000, Cons.cons(Cons.list$(Cons.cons(CharacterWrapper.wrapCharacter(' '), Cons.cons(IntegerWrapper.wrapInteger(0), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Cons.cons(StringWrapper.wrapString(">"), Cons.cons(Stella.SYM_STELLA_EOL, Cons.cons(Stella.NIL, Stella.NIL)))))), Stella.NIL)))), Stella.NIL), Stella.NIL), Stella.NIL)))));
              }
              else {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_PROGN, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("<"), Cons.cons(tag000, Cons.cons(Cons.cons(StringWrapper.wrapString(">"), Stella.NIL), Stella.NIL)))), Stella.NIL)))), Cons.cons(body.concatenate(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("</"), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_SUBSEQUENCE, Cons.cons(tag000, Cons.cons(Cons.list$(Cons.cons(IntegerWrapper.wrapInteger(0), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_POSITION, Cons.cons(tag000, Cons.cons(Cons.list$(Cons.cons(CharacterWrapper.wrapCharacter(' '), Cons.cons(IntegerWrapper.wrapInteger(0), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Cons.cons(StringWrapper.wrapString(">"), Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL)))), Stella.NIL), Stella.NIL), Stella.NIL)))));
              }
            }
          }
          else if (Surrogate.subtypeOfP(testValue001, Stella.SGT_STELLA_OBJECT)) {
            { Stella_Object tag000 = ((Stella_Object)(tag));

              tagvar = Stella.gensym("TAG");
              if (eolP) {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_LET, Cons.cons(Cons.cons(Cons.cons(tagvar, Cons.list$(Cons.cons(Stella.SYM_STELLA_STRING, Cons.cons(tag000, Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("<"), Cons.cons(tagvar, Cons.cons(Cons.cons(StringWrapper.wrapString(">"), Stella.NIL), Stella.NIL)))), Stella.NIL)))), Cons.cons(body.concatenate(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("</"), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_SUBSEQUENCE, Cons.cons(tagvar, Cons.cons(Cons.list$(Cons.cons(IntegerWrapper.wrapInteger(0), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_POSITION, Cons.cons(tagvar, Cons.cons(Cons.list$(Cons.cons(CharacterWrapper.wrapCharacter(' '), Cons.cons(IntegerWrapper.wrapInteger(0), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Cons.cons(StringWrapper.wrapString(">"), Cons.cons(Stella.SYM_STELLA_EOL, Cons.cons(Stella.NIL, Stella.NIL)))))), Stella.NIL)))), Stella.NIL), Stella.NIL), Stella.NIL))))));
              }
              else {
                return (Cons.list$(Cons.cons(Stella.SYM_STELLA_LET, Cons.cons(Cons.cons(Cons.cons(tagvar, Cons.list$(Cons.cons(Stella.SYM_STELLA_STRING, Cons.cons(tag000, Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("<"), Cons.cons(tagvar, Cons.cons(Cons.cons(StringWrapper.wrapString(">"), Stella.NIL), Stella.NIL)))), Stella.NIL)))), Cons.cons(body.concatenate(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_PRINT_STREAM, Cons.cons(stream, Cons.cons(Cons.list$(Cons.cons(StringWrapper.wrapString("</"), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_SUBSEQUENCE, Cons.cons(tagvar, Cons.cons(Cons.list$(Cons.cons(IntegerWrapper.wrapInteger(0), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_POSITION, Cons.cons(tagvar, Cons.cons(Cons.list$(Cons.cons(CharacterWrapper.wrapCharacter(' '), Cons.cons(IntegerWrapper.wrapInteger(0), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Cons.cons(StringWrapper.wrapString(">"), Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL)))), Stella.NIL), Stella.NIL), Stella.NIL))))));
              }
            }
          }
          else {
            { OutputStringStream stream001 = OutputStringStream.newOutputStringStream();

              stream001.nativeStream.print("`" + testValue001 + "' is not a valid case option");
              throw ((StellaException)(StellaException.newStellaException(stream001.theStringReader()).fillInStackTrace()));
            }
          }
        }
      }
    }
  }