code: private Map<String, Boolean> getRequiresConcepts(RuleSource ruleSource, String id, Attributes attributes) throws RuleException {
          Map<String, String> requiresDeclarations = getReferences(attributes, REQUIRES_CONCEPTS);
          Map<String, Boolean> required = new HashMap<>();
          for (Map.Entry<String, String> requiresEntry : requiresDeclarations.entrySet()) {
              String conceptId = requiresEntry.getKey();
              String dependencyAttribute = requiresEntry.getValue();
              Boolean optional = dependencyAttribute != null ? OPTIONAL.equals(dependencyAttribute.toLowerCase()) : null;
              required.put(conceptId, optional);
          }
          return required;
      }
docs: Evaluates required concepts of a rule.
  
  @param ruleSource
  The rule source.
  @param attributes
  The attributes of an asciidoc rule block
  @param id
  The id.
  @return A map where the keys represent the ids of required concepts and the
  values if they are optional.
  @throws RuleException
  If the dependencies cannot be evaluated.