title: How to annotate nested object in javascript for Closure Compiler and have all properties optional?
body: <p>Here is my class A and I want all options to be optional. It works fine for a,b,c properties but it doesn't work for c.cX properties. How to do it properly to make all properties optional?</p>
  
  <pre><code>// ==ClosureCompiler==
  // @compilation_level ADVANCED_OPTIMIZATIONS
  // @output_file_name default.js
  // ==/ClosureCompiler==
  
  /**
   * @typedef {{
   *     a: (string|undefined),
   *     b: (number|undefined),
   *     c: ({
   *         ca: (string|undefined),
   *         cb: (number|undefined),
   *         cc: (Function|undefined)
   *     }|undefined)
   * }}
   */
  var Options;
  
  
  /**
   * @param {Options=} options
   * @constructor
   */
  var A = function(options) {
      console.log(this);
  };
  
  
  new A({
      a: 'x',
      c: {
          ca: 'x',
          //cb: 1,
          cc: function() {}
      }
  });
  </code></pre>