public static Stella_Object updateInContext(Stella_Object oldvalue, Stella_Object newvalue, Context homecontext, boolean copytochildrenP) {
    { CsValue csvalue = null;

      if ((oldvalue != null) &&
          (oldvalue.primaryType() == Stella.SGT_STELLA_CS_VALUE)) {
        csvalue = ((CsValue)(oldvalue));
      }
      else {
        if ((homecontext == ((Context)(Stella.$CONTEXT$.get()))) &&
            (((Context)(Stella.$CONTEXT$.get())).childContexts.emptyP() ||
             (!copytochildrenP))) {
          return (newvalue);
        }
        else {
          {
            csvalue = CsValue.newCsValue();
            if (oldvalue != null) {
              csvalue.insertAt(homecontext, oldvalue);
            }
          }
        }
      }
      csvalue.insertAt(((Context)(Stella.$CONTEXT$.get())), newvalue);
      if (copytochildrenP) {
        CsValue.copyCurrentValueToChildren(csvalue, homecontext, newvalue);
      }
      return (csvalue);
    }
  }