Iterable<String> get deepKeys => keys.expand((i) { dynamic v = this[i]; if (v is Map<String, dynamic>) { return v.deepKeys.map((j) => "$i.$j"); } return [i]; });