code: void setVariableOrProperty(final String name, final Object value,
              final boolean strictJava, final boolean recurse)
              throws UtilEvalError {
          // primitives should have been wrapped
          if (value == null)
              throw new InterpreterError("null variable value");
          // Locate the variable definition if it exists.
          final Variable existing = this.getVariableImpl(name, recurse);
          // Found an existing variable here (or above if recurse allowed)
          if (existing != null)
              try {
                  existing.setValue(value, Variable.ASSIGNMENT);
              } catch (final UtilEvalError e) {
                  throw new UtilEvalError(
                          "Variable assignment: " + name + ": " + e.getMessage(), e);
              }
          else {
              // No previous variable definition found here (or above if recurse)
              if (strictJava)
                  throw new UtilEvalError(
                          "(Strict Java mode) Assignment to undeclared variable: "
                                  + name);
              final boolean setProp = this.attemptSetPropertyValue(name, value,
                      null);
              if (setProp)
                  return;
              // If recurse, set global untyped var, else set it here.
              // NameSpace varScope = recurse ? getGlobal() : this;
              // This modification makes default allocation local
              final NameSpace varScope = this;
              varScope.variables.put(name,
                      this.createVariable(name, value, null/* modifiers */));
              this.nameSpaceChanged();
          }
      }
docs: Set the value of a the variable or property 'name' through this
  namespace.
  <p>
  Sets a variable or property. See "setVariableOrProperty" for rules
  regarding scope.
  </p>
  <p>
  We first check for the existence of the variable. If it exists, we set
  it. If the variable does not exist we look for a property. If the
  property exists and is writable we set it. Finally, if neither the
  variable or the property exist, we create a new variable.
  </p>
  @param name the name
  @param value the value
  @param strictJava specifies whether strict java rules are applied.
  @param recurse determines whether we will search for the variable in our
  parent's scope before assigning locally.
  @throws UtilEvalError the util eval error