public static int compatibleRealMethods(MethodSlot prototypemethod, Surrogate abstracttype, Object [] MV_returnarray) {
    { Symbol methodname = prototypemethod.slotName;
      int nofrealsubtypes = 0;
      int nofrealmethods = 0;
      boolean compatiblesignaturesP = true;

      { Surrogate sub = null;
        Cons iter000 = ((Stella_Class)(abstracttype.surrogateValue)).classDirectSubs.theConsList;

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          sub = ((Surrogate)(iter000.value));
          if (((Stella_Class)(sub.surrogateValue)).abstractP) {
            { int nofsubs = Stella.NULL_INTEGER;
              int nofmethods = Stella.NULL_INTEGER;
              boolean compatibleP = false;

              { Object [] caller_MV_returnarray = new Object[2];

                nofsubs = MethodSlot.compatibleRealMethods(prototypemethod, sub, caller_MV_returnarray);
                nofmethods = ((int)(((IntegerWrapper)(caller_MV_returnarray[0])).wrapperValue));
                compatibleP = ((boolean)(((BooleanWrapper)(caller_MV_returnarray[1])).wrapperValue));
              }
              nofrealsubtypes = nofrealsubtypes + nofsubs;
              nofrealmethods = nofrealmethods + nofmethods;
              if (!(compatibleP)) {
                compatiblesignaturesP = false;
              }
            }
          }
          else {
            { Slot thismethod = null;

              nofrealsubtypes = nofrealsubtypes + 1;
              thismethod = Stella_Class.lookupSlot(((Stella_Class)(sub.surrogateValue)), methodname);
              if ((thismethod != null) &&
                  (!Stella_Object.storageSlotP(thismethod))) {
                nofrealmethods = nofrealmethods + 1;
                if (!(MethodSlot.identicalSignaturesP(prototypemethod, ((MethodSlot)(thismethod))))) {
                  compatiblesignaturesP = false;
                }
              }
            }
          }
        }
      }
      { int _return_temp = nofrealsubtypes;

        MV_returnarray[0] = IntegerWrapper.wrapInteger(nofrealmethods);
        MV_returnarray[1] = BooleanWrapper.wrapBoolean(compatiblesignaturesP);
        return (_return_temp);
      }
    }
  }