message: param-definition: fix areEqual, add setDefaultValues
diff: @@ -335,6 +335,13 @@ export namespace ParamDefinition {
  return d as Values<T>;
  }
  + export function setDefaultValues<T extends Params>(params: T, defaultValues: Values<T>) {
  + for (const k of Object.keys(params)) {
  + if (params[k].isOptional) continue;
  + params[k].defaultValue = defaultValues[k];
  + }
  + }
  +
  export function clone<P extends Params>(params: P): P {
  return deepClone(params);
  }
  @@ -352,8 +359,6 @@ export namespace ParamDefinition {
  export function areEqual(params: Params, a: any, b: any): boolean {
  if (a === b) return true;
  - if (!a) return !b;
  - if (!b) return !a;
  if (typeof a !== 'object' || typeof b !== 'object') return false;
  for (const k of Object.keys(params)) {
  @@ -364,8 +369,6 @@ export namespace ParamDefinition {
  export function isParamEqual(p: Any, a: any, b: any): boolean {
  if (a === b) return true;
  - if (!a) return !b;
  - if (!b) return !a;
  if (p.type === 'group') {
  return areEqual(p.params, a, b);
  