protected void traverseAttributeExpressions(final ReportElement element) {

    final String[] attrExprNamespaces = element.getAttributeExpressionNamespaces();
    for (int i = 0; i < attrExprNamespaces.length; i++) {
      final String attrExprNamespace = attrExprNamespaces[i];
      final String[] names = element.getAttributeExpressionNames(attrExprNamespace);
      for (int j = 0; j < names.length; j++) {
        final String name = names[j];
        final Expression expression = element.getAttributeExpression(attrExprNamespace, name);
        if (expression == null) {
          continue;
        }
        final String expressionName = expression.getClass().getName();
        if (ExpressionRegistry.getInstance().isExpressionRegistered(expressionName) == false) {
          inspectAttributeExpression(element, attrExprNamespace, name, expression, null);
        } else {
          final ExpressionMetaData metaData =
              ExpressionRegistry.getInstance().getExpressionMetaData(expressionName);
          inspectAttributeExpression(element, attrExprNamespace, name, expression, metaData);
        }
      }
    }
  }