code: package com.beijunyi.parallelgit.filesystem.utils;
  
  import java.nio.file.attribute.FileAttribute;
  import java.nio.file.attribute.PosixFilePermission;
  import java.util.*;
  import javax.annotation.Nonnull;
  
  import static java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE;
  
  public class FileAttributeReader {
  
    private final Map<String, Object> attributeMap = new HashMap<>();
  
    private FileAttributeReader(Collection<? extends FileAttribute> attributes) {
      for(FileAttribute attribute : attributes)
        attributeMap.put(attribute.name(), attribute.value());
    }
  
    @Nonnull
    public static FileAttributeReader read(Collection<? extends FileAttribute> attributes) {
      return new FileAttributeReader(attributes);
    }
  
    @SuppressWarnings("unchecked")
    public boolean isExecutable() {
      Set<PosixFilePermission> permissions = (Set<PosixFilePermission>) attributeMap.get("posix:permissions");
      return permissions != null && permissions.contains(OWNER_EXECUTE);
    }
  }
  