code: func (parser *Parser) ParseDeclaration() (*css.Declaration, error) {
  	result := css.NewDeclaration()
  	curValue := ""
  
  	for parser.tokenParsable() {
  		if parser.tokenChar(":") {
  			result.Property = strings.TrimSpace(curValue)
  			curValue = ""
  
  			parser.shiftToken()
  		} else if parser.tokenChar(";") || parser.tokenChar("}") {
  			if result.Property == "" {
  				errMsg := fmt.Sprintf("Unexpected ; character: %s", parser.nextToken().String())
  				return result, errors.New(errMsg)
  			}
  
  			if importantRegexp.MatchString(curValue) {
  				result.Important = true
  				curValue = importantRegexp.ReplaceAllString(curValue, "")
  			}
  
  			result.Value = strings.TrimSpace(curValue)
  
  			if parser.tokenChar(";") {
  				parser.shiftToken()
  			}
  
  			// finished
  			break
  		} else {
  			token := parser.shiftToken()
  			curValue += token.Value
  		}
  	}
  
  	// log.Printf("[parsed] Declaration: %s", result.String())
  
  	return result, parser.err()
  }
docs: // ParseDeclaration parses a declaration