code: func blockEnd(data []byte, openSym byte, closeSym byte) int {
  	level := 0
  	i := 0
  	ln := len(data)
  
  	for i < ln {
  		switch data[i] {
  		case '"': // If inside string, skip it
  			se, _ := stringEnd(data[i+1:])
  			if se == -1 {
  				return -1
  			}
  			i += se
  		case openSym: // If open symbol, increase level
  			level++
  		case closeSym: // If close symbol, increase level
  			level--
  
  			// If we have returned to the original level, we're done
  			if level == 0 {
  				return i + 1
  			}
  		}
  		i++
  	}
  
  	return -1
  }
docs: // Find end of the data structure, array or object.
  // For array openSym and closeSym will be '[' and ']', for object '{' and '}'