code: public ImmutableMap<String, Object> readAttributes(File file, String attributes) {
      String view = getViewName(attributes);
      List<String> attrs = getAttributeNames(attributes);
  
      if (attrs.size() > 1 && attrs.contains(ALL_ATTRIBUTES)) {
        // attrs contains * and other attributes
        throw new IllegalArgumentException("invalid attributes: " + attributes);
      }
  
      Map<String, Object> result = new HashMap<>();
      if (attrs.size() == 1 && attrs.contains(ALL_ATTRIBUTES)) {
        // for 'view:*' format, get all keys for all providers for the view
        AttributeProvider provider = providersByName.get(view);
        readAll(file, provider, result);
  
        for (String inheritedView : provider.inherits()) {
          AttributeProvider inheritedProvider = providersByName.get(inheritedView);
          readAll(file, inheritedProvider, result);
        }
      } else {
        // for 'view:attr1,attr2,etc'
        for (String attr : attrs) {
          result.put(attr, getAttribute(file, view, attr));
        }
      }
  
      return ImmutableMap.copyOf(result);
    }
docs: Implements {@link Files#readAttributes(Path, String, LinkOption...)}.