whole_func_string: function SelectionType(typeSpec) {
      if (!Array.isArray(typeSpec.data) && typeof typeSpec.data !== 'function') {
          throw new Error('instances of SelectionType need typeSpec.data to be an array or function that returns an array:' + JSON.stringify(typeSpec));
      }
      Object.keys(typeSpec).forEach(function(key) {
          this[key] = typeSpec[key];
      }, this);
  }
func_code_string: function SelectionType(typeSpec) {
      if (!Array.isArray(typeSpec.data) && typeof typeSpec.data !== 'function') {
          throw new Error('instances of SelectionType need typeSpec.data to be an array or function that returns an array:' + JSON.stringify(typeSpec));
      }
      Object.keys(typeSpec).forEach(function(key) {
          this[key] = typeSpec[key];
      }, this);
  }
func_documentation_string: One of a known set of options