public static boolean warnAboutFunctionShadowingSlotsP(MethodSlot function) {
    { Symbol name = function.slotName;

      if (name.symbolSlotOffset != Stella.NULL_INTEGER) {
        { Cons slots = Stella.NIL;

          { Module module = null;
            Iterator iter000 = Stella.allModules();

            while (iter000.nextP()) {
              module = ((Module)(iter000.value));
              { Slot slot = null;
                Iterator iter001 = Module.allSlots(module, true);
                Cons collect000 = null;

                while (iter001.nextP()) {
                  slot = ((Slot)(iter001.value));
                  if (slot.slotName == name) {
                    if (collect000 == null) {
                      {
                        collect000 = Cons.cons(slot, Stella.NIL);
                        if (slots == Stella.NIL) {
                          slots = collect000;
                        }
                        else {
                          Cons.addConsToEndOfConsList(slots, collect000);
                        }
                      }
                    }
                    else {
                      {
                        collect000.rest = Cons.cons(slot, Stella.NIL);
                        collect000 = collect000.rest;
                      }
                    }
                  }
                }
              }
            }
          }
          if (((BooleanWrapper)(KeyValueList.dynamicSlotValue(function.dynamicSlots, Stella.SYM_STELLA_METHOD_MACROp, Stella.FALSE_WRAPPER))).wrapperValue) {
            { Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

              try {
                Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                Stella.signalTranslationWarning();
                if (!(Stella.suppressWarningsP())) {
                  Stella.printErrorContext(">> WARNING: ", Stella.STANDARD_WARNING);
                  {
                    Stella.STANDARD_WARNING.nativeStream.println();
                    Stella.STANDARD_WARNING.nativeStream.println(" Macro `" + Stella_Object.deUglifyParseTree(name) + "' shadows the following methods/slots:");
                    Stella.STANDARD_WARNING.nativeStream.println("    `" + Stella_Object.deUglifyParseTree(slots) + "'.");
                  }
;
                }

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
              }
            }
          }
          else {
            { Object old$PrintreadablyP$001 = Stella.$PRINTREADABLYp$.get();

              try {
                Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                Stella.signalTranslationWarning();
                if (!(Stella.suppressWarningsP())) {
                  Stella.printErrorContext(">> WARNING: ", Stella.STANDARD_WARNING);
                  {
                    Stella.STANDARD_WARNING.nativeStream.println();
                    Stella.STANDARD_WARNING.nativeStream.println(" Function `" + Stella_Object.deUglifyParseTree(name) + "' shadows the following methods/slots:");
                    Stella.STANDARD_WARNING.nativeStream.println("    `" + Stella_Object.deUglifyParseTree(slots) + "'.");
                  }
;
                }

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$001);
              }
            }
          }
          return (true);
        }
      }
      return (false);
    }
  }