code: private Map<String, String> toMetadata( NodeList blocks ) {
          Map<String, String> dimensions = new HashMap<String, String>();
  
          for( int i = 0; i < blocks.getLength(); i++ ) {
              Node dimensionNode = blocks.item(i);
  
              if( dimensionNode.getNodeName().equals("member") ) {
                  String dimensionName = null;
                  String dimensionValue = null;
  
                  NodeList dimensionAttributes = dimensionNode.getChildNodes();
                  for( int j = 0; j < dimensionAttributes.getLength(); j++ ) {
                      Node attribute = dimensionAttributes.item(j);
                      String name = attribute.getNodeName();
  
                      if( name.equals("Name") ) {
                          dimensionName = provider.getTextValue(attribute);
                      }
                      else if( name.equals("Value") ) {
                          dimensionValue = provider.getTextValue(attribute);
                      }
                  }
                  if( dimensionName != null ) {
                      dimensions.put(dimensionName, dimensionValue);
                  }
              }
          }
  
          if( dimensions.size() == 0 ) {
              return null;
          }
          return dimensions;
      }
docs: Converts the given NodeList to a metadata map.
  
  @param blocks the NodeList to convert
  @return metadata map