code: private void retainArg(final Object arg) {
      if (arg instanceof Iterable<?>) {
        for (final Object o : (Iterable<?>) arg) {
          this.retainArg(o);
        }
      } else if (arg instanceof BaseProxy) {
        // Calling edit will validate and set up the tracking we need
        this.edit((BaseProxy) arg);
      }
    }
docs: Ensures that any method arguments are retained in the context's sphere of influence.