code: function _processTypeString(type, builder) {
  	if ( type && Array.isArray(type.names) ) {
  		type = type.names.join('|');
  	}
  	if ( type ) {
  		try {
  			return typeParser.parse( type, builder ).str;
  		} catch (e) {
  			error("failed to parse type string '" + type + "': " + e);
  			return type;
  		}
  	}
  }
docs: /*
  function testTypeParser(type) {
  debug("Type: '" + type + "' gives AST");
  try {
  console.log(typeParser.parse(type));
  } catch (e) {
  error("**** throws: " + e);
  }
  }
  
  testTypeParser("Array.<string>");
  testTypeParser("Array<string>");
  testTypeParser("Object.<string>");
  testTypeParser("Object<string>");
  testTypeParser("function(...string):Set<string>");
  testTypeParser("{a:int,b,c:float,d,e}");