public static StandardObject extractParameterType(StandardObject self, Symbol parameter, Object [] MV_returnarray) {
    { Surrogate testValue000 = Stella_Object.safePrimaryType(self);

      if (Surrogate.subtypeOfSurrogateP(testValue000)) {
        { Surrogate self000 = ((Surrogate)(self));

          { Slot slot = Stella_Class.lookupSlot(((Stella_Class)(self000.surrogateValue)), parameter);

            if (slot != null) {
              { StandardObject _return_temp = slot.type();

                MV_returnarray[0] = BooleanWrapper.wrapBoolean(true);
                return (_return_temp);
              }
            }
            else {
              { StandardObject _return_temp = Stella.SGT_STELLA_OBJECT;

                MV_returnarray[0] = BooleanWrapper.wrapBoolean(false);
                return (_return_temp);
              }
            }
          }
        }
      }
      else if (Surrogate.subtypeOfParametricTypeSpecifierP(testValue000)) {
        { ParametricTypeSpecifier self000 = ((ParametricTypeSpecifier)(self));

          { Symbol pname = null;
            Cons iter000 = ((Stella_Class)(self000.specifierBaseType.surrogateValue)).parameters().theConsList;
            StandardObject ptype = null;
            Cons iter001 = self000.specifierParameterTypes.theConsList;

            for (;(!(iter000 == Stella.NIL)) &&
                      (!(iter001 == Stella.NIL)); iter000 = iter000.rest, iter001 = iter001.rest) {
              pname = ((Symbol)(iter000.value));
              ptype = ((StandardObject)(iter001.value));
              if (pname == parameter) {
                { StandardObject _return_temp = ptype;

                  MV_returnarray[0] = BooleanWrapper.wrapBoolean(true);
                  return (_return_temp);
                }
              }
            }
          }
          { StandardObject _return_temp = Stella.SGT_STELLA_OBJECT;

            MV_returnarray[0] = BooleanWrapper.wrapBoolean(false);
            return (_return_temp);
          }
        }
      }
      else {
        { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

          stream000.nativeStream.print("extract-parameter-type: Not defined on `" + self + "'");
          throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
        }
      }
    }
  }