public Assertion build(Element element, AssertionBuilderFactory factory) throws IllegalArgumentException {
final SPConstants.SPVersion spVersion = SPConstants.SPVersion.getSPVersion(element.getNamespaceURI());
final Element nestedPolicyElement = SPUtils.getFirstPolicyChildElement(element);
final Policy nestedPolicy = nestedPolicyElement != null ? factory.getPolicyEngine().getPolicy(nestedPolicyElement) : new Policy();
InitiatorEncryptionToken initiatorEncryptionToken = new InitiatorEncryptionToken(
spVersion,
nestedPolicy
);
initiatorEncryptionToken.setOptional(SPUtils.isOptional(element));
initiatorEncryptionToken.setIgnorable(SPUtils.isIgnorable(element));
return initiatorEncryptionToken;
}