private void parseAttributeMap(String attributeName, Map<String, String> elementMap) {
   if ("ALL".equalsIgnoreCase(attributeName)) {
     for (OracleUserAttribute attribute : OracleUserAttribute.values()) {
       parseAttribute(attribute, elementMap, false);
     }
     return;
   }
   OracleUserAttribute attribute = OracleUserAttribute.valueOf(attributeName);
   // Keys of the map should be simple names of SPIOperations
   parseAttribute(attribute, elementMap, true);
 }
 ExtraAttributesPolicySetup build() {
   final Map<Pair<OracleUserAttribute, Class<? extends SPIOperation>>, ExtraAttributesPolicy>
       policies =
           new LinkedHashMap<
               Pair<OracleUserAttribute, Class<? extends SPIOperation>>, ExtraAttributesPolicy>(
               this.policies);
   for (OracleUserAttribute attribute : OracleUserAttribute.values()) {
     for (Class<? extends SPIOperation> operation : FrameworkUtil.allSPIOperations()) {
       Pair<OracleUserAttribute, Class<? extends SPIOperation>> pair =
           new Pair<OracleUserAttribute, Class<? extends SPIOperation>>(attribute, operation);
       ExtraAttributesPolicy policy = policies.get(pair);
       if (policy == null) {
         policy = attribute.getExtraAttributesPolicy(operation);
         if (policy == null) {
           policy = ExtraAttributesPolicy.FAIL;
         }
         policies.put(pair, policy);
       }
     }
   }
   return new ExtraAttributesPolicySetupImpl(policies);
 }