docs: function buildLines(schema, options, parameter, name) {
    var line, lines = [], type = '', defaultValue;
    //console.log('buildLines called', util.inspect(arguments, { deep: null }));
  
    if (name === undefined) {
      //console.log('no name\n', options, options.name);
      if (options.name !== undefined) {
        //console.log('have a name\n');
        name = options.name;
      } else {
        name = '';
      }
    }
  
    //console.log('name is', name);
    if (schema.types) {
      type = [];
      var t, tType;
  
      for (t in schema.types) {
        tType = typeToJsDocString(schema.types[t]);
  
        if (schema.types[t].multiple) {
          // JsDoc can't handle {}
          //if (schema.types[t].object) {
          //  tType = tType + '{}';
          //} else {
            tType = tType + '[]';
          //}
        }
        type.push(tType);
      }
      type = '{(' + type.join('|') + ')}';
    } else {
      type = typeToJsDocString(schema);
  
      if (schema.multiple) {
        // JsDoc can't handle {}
        //if (schema.object) {
        //  type = type + '{}';
        //} else {
          type = type + '[]';
        //}
      }
      
      type = '{' + type + '}';
    }
  
    if (parameter) {
      line = '@' + options.type + ' ' + type;
  
      if (name) {
        if (schema.default) {
          switch (typeof schema.default) {
            case 'object':
              defaultValue = '';
              break;
            case 'boolean':
              defaultValue = '=' + (schema.default ? 'true' : 'false');
              break;
            case 'string':
              defaultValue = '=\'' + schema.default + '\'';
              break;
            default:
              defaultValue = '=' + schema.default;
              break;
          }
        } else {
          defaultValue = '';
        }
        if (schema.required) {
          line += ' ' + name + defaultValue;
        } else {
          line += ' [' + name + defaultValue + ']';
        }
      }
      
      if (schema.doc) {
        line += ' ' + schema.doc;
      }
  
      lines.push(line);
    } else {
      if (schema.doc) {
        lines.push(schema.doc);
        lines.push('');
      }
  
      if (!(schema.type instanceof Object)) {
        lines.push('@type ' + type + (name ? ' ' + name : ''));
      }
    }
  
    if (schema.type instanceof Object && !schema.noDocDig) {
      var o;
      for (o in schema.type) {
        lines = lines.concat(buildLines(schema.type[o], options, true,
            (name ? name + '.' : '') + o));
      }
    }
  
    //console.log('returning', lines);
    return lines;
  }