@Override
	public Map<String, Object> introspect(String token) {
		TokenIntrospectionSuccessResponse response = Optional.of(token)
				.map(this::buildRequest)
				.map(this::makeRequest)
				.map(this::adaptToNimbusResponse)
				.map(this::parseNimbusResponse)
				.map(this::castToNimbusSuccess)
				// relying solely on the authorization server to validate this token (not checking 'exp', for example)
				.filter(TokenIntrospectionSuccessResponse::isActive)
				.orElseThrow(() -> new OAuth2IntrospectionException("Provided token [" + token + "] isn't active"));
		return convertClaimsSet(response);
	}