public static Stella_Object evaluateArgumentTree(Stella_Object tree, boolean evaluateP, Object [] MV_returnarray) {
    { Surrogate testValue000 = Stella_Object.safePrimaryType(tree);

      if (testValue000 == Stella.SGT_STELLA_CONS) {
        { Cons tree000 = ((Cons)(tree));

          if (evaluateP) {
            return (Cons.evaluateConsTree(tree000, MV_returnarray));
          }
          else {
            { Stella_Object _return_temp = tree000;

              MV_returnarray[0] = Stella.SGT_STELLA_CONS;
              return (_return_temp);
            }
          }
        }
      }
      else if (Surrogate.subtypeOfWrapperP(testValue000)) {
        { Wrapper tree000 = ((Wrapper)(tree));

          { Stella_Object _return_temp = tree000;

            MV_returnarray[0] = Surrogate.wrappedTypeToType(tree000.primaryType());
            return (_return_temp);
          }
        }
      }
      else {
        if (evaluateP) {
          return (Stella_Object.evaluateAtomicTree(tree, MV_returnarray));
        }
        else {
          { Stella_Object _return_temp = tree;

            MV_returnarray[0] = tree.primaryType();
            return (_return_temp);
          }
        }
      }
    }
  }