code: function Attribute(a, b) {
  	    _classCallCheck(this, Attribute);
  
  	    if (typeof a === 'object' && typeof a.type === 'string' && typeof a.value === 'string') {
  	      b = a.value;
  	      a = a.type;
  	    }
  	    if (typeof a !== 'string') {
  	      throw new Error('First param must be a string, got ' + (typeof a === 'undefined' ? 'undefined' : _typeof(a)) + ': ' + _JSON$stringify(a));
  	    }
  	    if (!a.length) {
  	      throw new Error('First param string is empty');
  	    }
  	    if (b) {
  	      if (typeof b !== 'string') {
  	        throw new Error('Second parameter must be a string, got ' + (typeof b === 'undefined' ? 'undefined' : _typeof(b)) + ': ' + _JSON$stringify(b));
  	      }
  	      if (!b.length) {
  	        throw new Error('Second param string is empty');
  	      }
  	      this.type = a;
  	      this.value = b;
  	    } else {
  	      this.value = a;
  	      var t = Attribute.guessTypeOf(this.value);
  	      if (t) {
  	        this.type = t;
  	      } else {
  	        throw new Error('Type of attribute was omitted and could not be guessed');
  	      }
  	    }
  	  }
docs: Usage: new Attribute(value) or new Attribute(type, value)
  @param {string} a
  @param {string} b