public static boolean helpTranslateSystem(Cons files, boolean twopassP, boolean forcetranslationP) {
    { Object old$Translationunits$000 = Stella.$TRANSLATIONUNITS$.get();

      try {
        Native.setSpecial(Stella.$TRANSLATIONUNITS$, List.newList());
        { Keyword outputlanguage = ((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get()));
          String filename = null;
          boolean translatedfileP = false;
          KeyValueList walkedunits = KeyValueList.newKeyValueList();

          Stella.clearSymbolRegistry();
          if (twopassP) {
            { StringWrapper file = null;
              Cons iter000 = files;

              loop000 : for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
                file = ((StringWrapper)(iter000.value));
                if (forcetranslationP ||
                    (Stella_Object.stellaNeedToTranslateP(file, outputlanguage) ||
                     (!((SystemDefinition)(Stella.$CURRENTSYSTEMDEFINITION$.get())).loadedP))) {
                  filename = Stella.makeFileName(file.wrapperValue, Stella.KWD_STELLA, true);
                  if (!(Stella.probeFileP(filename))) {
                    System.out.println("Warning: File `" + filename + "' does not exist.");
                    continue loop000;
                  }
                  Stella.operateOnFile(filename, Stella.KWD_DEFINE);
                  Stella.cleanUpTranslationUnitsSpecial();
                  translatedfileP = true;
                }
              }
            }
            if (translatedfileP) {
              if (((Integer)(Stella.$TRANSLATIONVERBOSITYLEVEL$.get())).intValue() >= 1) {
                System.out.println("*** Pass 2, finalizing objects...");
              }
              Stella.finalizeClassesAndSlots();
            }
          }
          { StringWrapper file = null;
            Cons iter001 = files;

            loop001 : for (;!(iter001 == Stella.NIL); iter001 = iter001.rest) {
              file = ((StringWrapper)(iter001.value));
              if (forcetranslationP ||
                  Stella_Object.stellaNeedToTranslateP(file, outputlanguage)) {
                filename = Stella.makeFileName(file.wrapperValue, Stella.KWD_STELLA, true);
                if (!(Stella.probeFileP(filename))) {
                  System.out.println("Warning: File `" + filename + "' does not exist.");
                  continue loop001;
                }
                Stella.operateOnFile(filename, Stella.KWD_WALK);
                walkedunits.insertAt(StringWrapper.wrapString(filename), ((List)(Stella.$TRANSLATIONUNITS$.get())));
                Native.setSpecial(Stella.$TRANSLATIONUNITS$, List.newList());
              }
            }
          }
          walkedunits.reverse();
          if (((Integer)(Stella.$TRANSLATIONVERBOSITYLEVEL$.get())).intValue() >= 1) {
            System.out.println("    ==============================");
          }
          if (outputlanguage == Stella.KWD_COMMON_LISP) {
            KeyValueList.clTranslateWalkedSystemUnits(walkedunits);
          }
          else if (outputlanguage == Stella.KWD_CPP) {
            KeyValueList.cppTranslateWalkedSystemUnits(walkedunits);
          }
          else if (outputlanguage == Stella.KWD_JAVA) {
            KeyValueList.javaTranslateWalkedSystemUnits(walkedunits);
          }
          else {
            { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

              stream000.nativeStream.print("`" + outputlanguage + "' is not a valid case option");
              throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
            }
          }
          Stella.clearSymbolRegistry();
          return (translatedfileP);
        }

      } finally {
        Stella.$TRANSLATIONUNITS$.set(old$Translationunits$000);
      }
    }
  }