code: func (m MapClaims) Valid() error {
  	vErr := new(ValidationError)
  	now := TimeFunc().Unix()
  
  	if m.VerifyExpiresAt(now, false) == false {
  		vErr.Inner = errors.New("Token is expired")
  		vErr.Errors |= ValidationErrorExpired
  	}
  
  	if m.VerifyIssuedAt(now, false) == false {
  		vErr.Inner = errors.New("Token used before issued")
  		vErr.Errors |= ValidationErrorIssuedAt
  	}
  
  	if m.VerifyNotBefore(now, false) == false {
  		vErr.Inner = errors.New("Token is not valid yet")
  		vErr.Errors |= ValidationErrorNotValidYet
  	}
  
  	if vErr.valid() {
  		return nil
  	}
  
  	return vErr
  }
docs: // Validates time based claims "exp, iat, nbf".
  // There is no accounting for clock skew.
  // As well, if any of the above claims are not in the token, it will still
  // be considered a valid claim.