func (t *JSONWebToken) Claims(key interface{}, dest ...interface{}) error {
	payloadKey := tryJWKS(t.Headers, key)
	b, err := t.payload(payloadKey)
	if err != nil {
		return err
	}
	for _, d := range dest {
		if err := json.Unmarshal(b, d); err != nil {
			return err
		}
	}
	return nil
}
Claims deserializes a JSONWebToken into dest using the provided key.
package jwt
import (
	"fmt"
	"strings"
	jose "gopkg.in/square/go-jose.v2"
	"gopkg.in/square/go-jose.v2/json"
)
type JSONWebToken struct {
	payload           func(k interface{}) ([]byte, error)
	unverifiedPayload func() []byte
	Headers           []jose.Header
}
type NestedJSONWebToken struct {
	enc     *jose.JSONWebEncryption
	Headers []jose.Header
}