public static String javaYieldClassNameForFunction(MethodSlot function) {
    { String rawClassName = "";

      if (MethodSlot.javaFlotsamFunctionP(function)) {
        rawClassName = Module.javaYieldFlotsamClassName(function.homeModule());
        if (Module.omitJavaPackagePrefixP(function.homeModule(), Stella.javaYieldFlotsamTypeName(rawClassName))) {
          return (rawClassName);
        }
        else {
          return (Module.javaPackagePrefix(function.homeModule(), ".") + rawClassName);
        }
      }
      else if (((BooleanWrapper)(KeyValueList.dynamicSlotValue(function.dynamicSlots, Stella.SYM_STELLA_METHOD_NATIVEp, Stella.FALSE_WRAPPER))).wrapperValue) {
        return (Stella.javaYieldNativeClassName());
      }
      else if (function.methodStartupFunctionP()) {
        rawClassName = StringWrapper.javaTranslateClassNamestring(StringWrapper.wrapString(((StringWrapper)(KeyValueList.dynamicSlotValue(function.dynamicSlots, Stella.SYM_STELLA_METHOD_STARTUP_CLASSNAME, Stella.NULL_STRING_WRAPPER))).wrapperValue)).wrapperValue;
        if (Module.omitJavaPackagePrefixP(function.homeModule(), Stella.javaYieldFlotsamTypeName(rawClassName))) {
          return (rawClassName);
        }
        else {
          return (Module.javaPackagePrefix(function.homeModule(), ".") + rawClassName);
        }
      }
      else if (((BooleanWrapper)(KeyValueList.dynamicSlotValue(function.dynamicSlots, Stella.SYM_STELLA_METHOD_CONSTRUCTORp, Stella.FALSE_WRAPPER))).wrapperValue) {
        return (StandardObject.javaTranslateTypeSpecForFunction(((StandardObject)(function.methodReturnTypeSpecifiers().first()))).wrapperValue);
      }
      else {
        return (StandardObject.javaTranslateTypeSpecForFunction(((StandardObject)(function.methodParameterTypeSpecifiers().first()))).wrapperValue);
      }
    }
  }