test_class.declarator: PATH_INCUG_MAP = new HashMap<>()
test_class.modifier: private static final
test_class.original_string: private static final Map<String, Boolean> PATH_INCUG_MAP = new HashMap<>();
test_class.type: Map<String, Boolean>
test_class.var_name: PATH_INCUG_MAP
test_class.declarator: READABLE_PATHS = ImmutableList.of(
              "/content/a/b/c", "/content/a/b/c/jcr:primaryType",
              "/content/a/b/c/nonExisting", "/content/a/b/c/nonExisting/jcr:primaryType")
test_class.modifier: private static final
test_class.original_string: private static final List<String> READABLE_PATHS = ImmutableList.of(
              "/content/a/b/c", "/content/a/b/c/jcr:primaryType",
              "/content/a/b/c/nonExisting", "/content/a/b/c/nonExisting/jcr:primaryType");
test_class.type: List<String>
test_class.var_name: READABLE_PATHS
test_class.declarator: NOT_READABLE_PATHS = ImmutableList.of(
              "/", "/jcr:primaryType",
              UNSUPPORTED_PATH, UNSUPPORTED_PATH + "/jcr:primaryType",
              "/content", "/content/jcr:primaryType",
              "/content/a", "/content/a/jcr:primaryType",
              "/content/a/b", "/content/a/b/jcr:primaryType",
              "/content/a/b/c/rep:cugPolicy", "/content/a/b/c/rep:cugPolicy/jcr:primaryType", "/content/a/b/c/rep:cugPolicy/rep:principalNames",
              "/content/a/b/c/rep:cugPolicy/nonExisting", "/content/a/b/c/rep:cugPolicy/nonExisting/jcr:primaryType",
              "/content/aa", "/content/aa/jcr:primaryType",
              "/content/bb", "/content/bb/jcr:primaryType",
              "/content/aa/bb/rep:cugPolicy", "/content/aa/bb/rep:cugPolicy/jcr:primaryType", "/content/aa/bb/rep:cugPolicy/rep:principalNames",
              "/content/nonExisting", "/content/nonExisting/jcr:primaryType",
              "/content/no","/content/no/cug","/content/no/cug/in","/content/no/cug/in/subtree")
test_class.modifier: private static final
test_class.original_string: private static final List<String> NOT_READABLE_PATHS = ImmutableList.of(
              "/", "/jcr:primaryType",
              UNSUPPORTED_PATH, UNSUPPORTED_PATH + "/jcr:primaryType",
              "/content", "/content/jcr:primaryType",
              "/content/a", "/content/a/jcr:primaryType",
              "/content/a/b", "/content/a/b/jcr:primaryType",
              "/content/a/b/c/rep:cugPolicy", "/content/a/b/c/rep:cugPolicy/jcr:primaryType", "/content/a/b/c/rep:cugPolicy/rep:principalNames",
              "/content/a/b/c/rep:cugPolicy/nonExisting", "/content/a/b/c/rep:cugPolicy/nonExisting/jcr:primaryType",
              "/content/aa", "/content/aa/jcr:primaryType",
              "/content/bb", "/content/bb/jcr:primaryType",
              "/content/aa/bb/rep:cugPolicy", "/content/aa/bb/rep:cugPolicy/jcr:primaryType", "/content/aa/bb/rep:cugPolicy/rep:principalNames",
              "/content/nonExisting", "/content/nonExisting/jcr:primaryType",
              "/content/no","/content/no/cug","/content/no/cug/in","/content/no/cug/in/subtree");
test_class.type: List<String>
test_class.var_name: NOT_READABLE_PATHS
test_class.declarator: testGroupPrincipal
test_class.modifier: private
test_class.original_string: private Principal testGroupPrincipal;
test_class.type: Principal
test_class.var_name: testGroupPrincipal
test_class.declarator: cugPermProvider
test_class.modifier: private
test_class.original_string: private CugPermissionProvider cugPermProvider;
test_class.type: CugPermissionProvider
test_class.var_name: cugPermProvider
test_class.file: oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugPermissionProviderTest.java
test_class.identifier: CugPermissionProviderTest
test_class.interfaces: implements NodeTypeConstants
test_class.superclass: extends AbstractCugTest
test_case.body: @Test
      public void testSupportedPrivileges() {
          PrivilegeBits readBits = PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ);
          PrivilegeBits readNodeBits = PrivilegeBits.BUILT_IN.get(PrivilegeConstants.REP_READ_NODES);
          PrivilegeBits readPropBits = PrivilegeBits.BUILT_IN.get(PrivilegeConstants.REP_READ_PROPERTIES);
          PrivilegeBitsProvider provider = new PrivilegeBitsProvider(root);
  
          for (String path : PATH_INCUG_MAP.keySet()) {
              boolean isInCug = PATH_INCUG_MAP.get(path);
              Tree tree = root.getTree(path);
              if (isInCug) {
                  assertPrivilegeBits(readBits, cugPermProvider.supportedPrivileges(tree, readBits));
                  assertPrivilegeBits(readNodeBits, cugPermProvider.supportedPrivileges(tree, readNodeBits));
                  assertPrivilegeBits(readPropBits, cugPermProvider.supportedPrivileges(tree, readPropBits));
  
                  assertPrivilegeBits(readBits, cugPermProvider.supportedPrivileges(tree, provider.getBits(PrivilegeConstants.JCR_ALL)));
                  assertPrivilegeBits(readNodeBits, cugPermProvider.supportedPrivileges(tree, provider.getBits(PrivilegeConstants.REP_READ_NODES, PrivilegeConstants.JCR_READ_ACCESS_CONTROL)));
  
              } else {
                  assertTrue(cugPermProvider.supportedPrivileges(tree, readBits).isEmpty());
                  assertTrue(cugPermProvider.supportedPrivileges(tree, readNodeBits).isEmpty());
                  assertTrue(cugPermProvider.supportedPrivileges(tree, readPropBits).isEmpty());
  
                  assertTrue(cugPermProvider.supportedPrivileges(tree, provider.getBits(PrivilegeConstants.JCR_ALL)).isEmpty());
                  assertTrue(cugPermProvider.supportedPrivileges(tree, provider.getBits(PrivilegeConstants.REP_READ_NODES, PrivilegeConstants.JCR_READ_ACCESS_CONTROL)).isEmpty());
              }
  
              assertTrue(cugPermProvider.supportedPrivileges(tree, provider.getBits(PrivilegeConstants.REP_WRITE)).isEmpty());
              assertTrue(cugPermProvider.supportedPrivileges(tree, provider.getBits(PrivilegeConstants.JCR_ADD_CHILD_NODES, PrivilegeConstants.JCR_REMOVE_CHILD_NODES, PrivilegeConstants.JCR_REMOVE_NODE)).isEmpty());
              assertTrue(cugPermProvider.supportedPrivileges(tree, provider.getBits(PrivilegeConstants.JCR_READ_ACCESS_CONTROL)).isEmpty());
          }
      }
test_case.class_method_signature: CugPermissionProviderTest.testSupportedPrivileges()
test_case.full_signature: @Test public void testSupportedPrivileges()
test_case.identifier: testSupportedPrivileges
test_case.invocations: get get get keySet get getTree assertPrivilegeBits supportedPrivileges assertPrivilegeBits supportedPrivileges assertPrivilegeBits supportedPrivileges assertPrivilegeBits supportedPrivileges getBits assertPrivilegeBits supportedPrivileges getBits assertTrue isEmpty supportedPrivileges assertTrue isEmpty supportedPrivileges assertTrue isEmpty supportedPrivileges assertTrue isEmpty supportedPrivileges getBits assertTrue isEmpty supportedPrivileges getBits assertTrue isEmpty supportedPrivileges getBits assertTrue isEmpty supportedPrivileges getBits assertTrue isEmpty supportedPrivileges getBits
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testSupportedPrivileges()
focal_class.declarator: READ_PRIVILEGE_NAMES = ImmutableSet.of(
              PrivilegeConstants.JCR_READ,
              PrivilegeConstants.REP_READ_NODES,
              PrivilegeConstants.REP_READ_PROPERTIES
      )
focal_class.modifier: private static final
focal_class.original_string: private static final Set<String> READ_PRIVILEGE_NAMES = ImmutableSet.of(
              PrivilegeConstants.JCR_READ,
              PrivilegeConstants.REP_READ_NODES,
              PrivilegeConstants.REP_READ_PROPERTIES
      );
focal_class.type: Set<String>
focal_class.var_name: READ_PRIVILEGE_NAMES
focal_class.declarator: root
focal_class.modifier: private final
focal_class.original_string: private final Root root;
focal_class.type: Root
focal_class.var_name: root
focal_class.declarator: workspaceName
focal_class.modifier: private final
focal_class.original_string: private final String workspaceName;
focal_class.type: String
focal_class.var_name: workspaceName
focal_class.declarator: principalNames
focal_class.modifier: private final
focal_class.original_string: private final String[] principalNames;
focal_class.type: String[]
focal_class.var_name: principalNames
focal_class.declarator: typeProvider
focal_class.modifier: private final
focal_class.original_string: private final TreeTypeProvider typeProvider;
focal_class.type: TreeTypeProvider
focal_class.var_name: typeProvider
focal_class.declarator: ctx
focal_class.modifier: private final
focal_class.original_string: private final Context ctx;
focal_class.type: Context
focal_class.var_name: ctx
focal_class.declarator: supportedPaths
focal_class.modifier: private final
focal_class.original_string: private final SupportedPaths supportedPaths;
focal_class.type: SupportedPaths
focal_class.var_name: supportedPaths
focal_class.declarator: immutableRoot
focal_class.modifier: private
focal_class.original_string: private Root immutableRoot;
focal_class.type: Root
focal_class.var_name: immutableRoot
focal_class.declarator: versionManager
focal_class.modifier: private
focal_class.original_string: private ReadOnlyVersionManager versionManager;
focal_class.type: ReadOnlyVersionManager
focal_class.var_name: versionManager
focal_class.declarator: topPaths
focal_class.modifier: private
focal_class.original_string: private TopLevelPaths topPaths;
focal_class.type: TopLevelPaths
focal_class.var_name: topPaths
focal_class.declarator: rootProvider
focal_class.modifier: private final
focal_class.original_string: private final RootProvider rootProvider;
focal_class.type: RootProvider
focal_class.var_name: rootProvider
focal_class.declarator: treeProvider
focal_class.modifier: private final
focal_class.original_string: private final TreeProvider treeProvider;
focal_class.type: TreeProvider
focal_class.var_name: treeProvider
focal_class.file: oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugPermissionProvider.java
focal_class.identifier: CugPermissionProvider
focal_class.interfaces: implements AggregatedPermissionProvider, CugConstants
focal_class.class_method_signature: CugPermissionProvider.CugPermissionProvider(@NotNull Root root,
                            @NotNull String workspaceName,
                            @NotNull Set<Principal> principals,
                            @NotNull Set<String> supportedPaths,
                            @NotNull Context ctx,
                            @NotNull RootProvider rootProvider,
                            @NotNull TreeProvider treeProvider)
focal_class.full_signature:   CugPermissionProvider(@NotNull Root root,
                            @NotNull String workspaceName,
                            @NotNull Set<Principal> principals,
                            @NotNull Set<String> supportedPaths,
                            @NotNull Context ctx,
                            @NotNull RootProvider rootProvider,
                            @NotNull TreeProvider treeProvider)
focal_class.identifier: CugPermissionProvider
focal_class.parameters: (@NotNull Root root,
                            @NotNull String workspaceName,
                            @NotNull Set<Principal> principals,
                            @NotNull Set<String> supportedPaths,
                            @NotNull Context ctx,
                            @NotNull RootProvider rootProvider,
                            @NotNull TreeProvider treeProvider)
focal_class.signature:  CugPermissionProvider(@NotNull Root root,
                            @NotNull String workspaceName,
                            @NotNull Set<Principal> principals,
                            @NotNull Set<String> supportedPaths,
                            @NotNull Context ctx,
                            @NotNull RootProvider rootProvider,
                            @NotNull TreeProvider treeProvider)
focal_class.class_method_signature: CugPermissionProvider.getTreePermission(@NotNull Tree parent, @NotNull TreeType parentType, @NotNull String childName, @NotNull NodeState childState, @NotNull AbstractTreePermission parentPermission)
focal_class.full_signature: @NotNull TreePermission getTreePermission(@NotNull Tree parent, @NotNull TreeType parentType, @NotNull String childName, @NotNull NodeState childState, @NotNull AbstractTreePermission parentPermission)
focal_class.identifier: getTreePermission
focal_class.modifiers: @NotNull
focal_class.parameters: (@NotNull Tree parent, @NotNull TreeType parentType, @NotNull String childName, @NotNull NodeState childState, @NotNull AbstractTreePermission parentPermission)
focal_class.return: TreePermission
focal_class.signature: TreePermission getTreePermission(@NotNull Tree parent, @NotNull TreeType parentType, @NotNull String childName, @NotNull NodeState childState, @NotNull AbstractTreePermission parentPermission)
focal_class.class_method_signature: CugPermissionProvider.isAllow(@NotNull Tree cugTree)
focal_class.full_signature:  boolean isAllow(@NotNull Tree cugTree)
focal_class.identifier: isAllow
focal_class.parameters: (@NotNull Tree cugTree)
focal_class.return: boolean
focal_class.signature: boolean isAllow(@NotNull Tree cugTree)
focal_class.class_method_signature: CugPermissionProvider.refresh()
focal_class.full_signature: @Override public void refresh()
focal_class.identifier: refresh
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void refresh()
focal_class.class_method_signature: CugPermissionProvider.getPrivileges(@Nullable Tree tree)
focal_class.full_signature: @NotNull @Override public Set<String> getPrivileges(@Nullable Tree tree)
focal_class.identifier: getPrivileges
focal_class.modifiers: @NotNull @Override public
focal_class.parameters: (@Nullable Tree tree)
focal_class.return: Set<String>
focal_class.signature: Set<String> getPrivileges(@Nullable Tree tree)
focal_class.class_method_signature: CugPermissionProvider.hasPrivileges(@Nullable Tree tree, @NotNull String... privilegeNames)
focal_class.full_signature: @Override public boolean hasPrivileges(@Nullable Tree tree, @NotNull String... privilegeNames)
focal_class.identifier: hasPrivileges
focal_class.modifiers: @Override public
focal_class.parameters: (@Nullable Tree tree, @NotNull String... privilegeNames)
focal_class.return: boolean
focal_class.signature: boolean hasPrivileges(@Nullable Tree tree, @NotNull String... privilegeNames)
focal_class.class_method_signature: CugPermissionProvider.getRepositoryPermission()
focal_class.full_signature: @NotNull @Override public RepositoryPermission getRepositoryPermission()
focal_class.identifier: getRepositoryPermission
focal_class.modifiers: @NotNull @Override public
focal_class.parameters: ()
focal_class.return: RepositoryPermission
focal_class.signature: RepositoryPermission getRepositoryPermission()
focal_class.class_method_signature: CugPermissionProvider.getTreePermission(@NotNull Tree tree, @NotNull TreePermission parentPermission)
focal_class.full_signature: @NotNull @Override public TreePermission getTreePermission(@NotNull Tree tree, @NotNull TreePermission parentPermission)
focal_class.identifier: getTreePermission
focal_class.modifiers: @NotNull @Override public
focal_class.parameters: (@NotNull Tree tree, @NotNull TreePermission parentPermission)
focal_class.return: TreePermission
focal_class.signature: TreePermission getTreePermission(@NotNull Tree tree, @NotNull TreePermission parentPermission)
focal_class.class_method_signature: CugPermissionProvider.isGranted(@NotNull Tree tree, PropertyState property, long permissions)
focal_class.full_signature: @Override public boolean isGranted(@NotNull Tree tree, PropertyState property, long permissions)
focal_class.identifier: isGranted
focal_class.modifiers: @Override public
focal_class.parameters: (@NotNull Tree tree, PropertyState property, long permissions)
focal_class.return: boolean
focal_class.signature: boolean isGranted(@NotNull Tree tree, PropertyState property, long permissions)
focal_class.class_method_signature: CugPermissionProvider.isGranted(@NotNull String oakPath, @NotNull String jcrActions)
focal_class.full_signature: @Override public boolean isGranted(@NotNull String oakPath, @NotNull String jcrActions)
focal_class.identifier: isGranted
focal_class.modifiers: @Override public
focal_class.parameters: (@NotNull String oakPath, @NotNull String jcrActions)
focal_class.return: boolean
focal_class.signature: boolean isGranted(@NotNull String oakPath, @NotNull String jcrActions)
focal_class.class_method_signature: CugPermissionProvider.supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits)
focal_class.full_signature: @NotNull @Override public PrivilegeBits supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits)
focal_class.identifier: supportedPrivileges
focal_class.modifiers: @NotNull @Override public
focal_class.parameters: (@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits)
focal_class.return: PrivilegeBits
focal_class.signature: PrivilegeBits supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits)
focal_class.class_method_signature: CugPermissionProvider.supportedPermissions(@Nullable Tree tree, @Nullable PropertyState property, long permissions)
focal_class.full_signature: @Override public long supportedPermissions(@Nullable Tree tree, @Nullable PropertyState property, long permissions)
focal_class.identifier: supportedPermissions
focal_class.modifiers: @Override public
focal_class.parameters: (@Nullable Tree tree, @Nullable PropertyState property, long permissions)
focal_class.return: long
focal_class.signature: long supportedPermissions(@Nullable Tree tree, @Nullable PropertyState property, long permissions)
focal_class.class_method_signature: CugPermissionProvider.supportedPermissions(@NotNull TreeLocation location, long permissions)
focal_class.full_signature: @Override public long supportedPermissions(@NotNull TreeLocation location, long permissions)
focal_class.identifier: supportedPermissions
focal_class.modifiers: @Override public
focal_class.parameters: (@NotNull TreeLocation location, long permissions)
focal_class.return: long
focal_class.signature: long supportedPermissions(@NotNull TreeLocation location, long permissions)
focal_class.class_method_signature: CugPermissionProvider.supportedPermissions(@NotNull TreePermission treePermission, @Nullable PropertyState property, long permissions)
focal_class.full_signature: @Override public long supportedPermissions(@NotNull TreePermission treePermission, @Nullable PropertyState property, long permissions)
focal_class.identifier: supportedPermissions
focal_class.modifiers: @Override public
focal_class.parameters: (@NotNull TreePermission treePermission, @Nullable PropertyState property, long permissions)
focal_class.return: long
focal_class.signature: long supportedPermissions(@NotNull TreePermission treePermission, @Nullable PropertyState property, long permissions)
focal_class.class_method_signature: CugPermissionProvider.isGranted(@NotNull TreeLocation location, long permissions)
focal_class.full_signature: @Override public boolean isGranted(@NotNull TreeLocation location, long permissions)
focal_class.identifier: isGranted
focal_class.modifiers: @Override public
focal_class.parameters: (@NotNull TreeLocation location, long permissions)
focal_class.return: boolean
focal_class.signature: boolean isGranted(@NotNull TreeLocation location, long permissions)
focal_class.class_method_signature: CugPermissionProvider.getTreePermission(@NotNull Tree immutableTree, @NotNull TreeType type, @NotNull TreePermission parentPermission)
focal_class.full_signature: @NotNull public TreePermission getTreePermission(@NotNull Tree immutableTree, @NotNull TreeType type, @NotNull TreePermission parentPermission)
focal_class.identifier: getTreePermission
focal_class.modifiers: @NotNull public
focal_class.parameters: (@NotNull Tree immutableTree, @NotNull TreeType type, @NotNull TreePermission parentPermission)
focal_class.return: TreePermission
focal_class.signature: TreePermission getTreePermission(@NotNull Tree immutableTree, @NotNull TreeType type, @NotNull TreePermission parentPermission)
focal_class.class_method_signature: CugPermissionProvider.isJcrSystemPath(@NotNull Tree tree)
focal_class.full_signature: private static boolean isJcrSystemPath(@NotNull Tree tree)
focal_class.identifier: isJcrSystemPath
focal_class.modifiers: private static
focal_class.parameters: (@NotNull Tree tree)
focal_class.return: boolean
focal_class.signature: boolean isJcrSystemPath(@NotNull Tree tree)
focal_class.class_method_signature: CugPermissionProvider.isRead(long permission)
focal_class.full_signature: private static boolean isRead(long permission)
focal_class.identifier: isRead
focal_class.modifiers: private static
focal_class.parameters: (long permission)
focal_class.return: boolean
focal_class.signature: boolean isRead(long permission)
focal_class.class_method_signature: CugPermissionProvider.isSupportedType(@NotNull TreeType type)
focal_class.full_signature: private static boolean isSupportedType(@NotNull TreeType type)
focal_class.identifier: isSupportedType
focal_class.modifiers: private static
focal_class.parameters: (@NotNull TreeType type)
focal_class.return: boolean
focal_class.signature: boolean isSupportedType(@NotNull TreeType type)
focal_class.class_method_signature: CugPermissionProvider.includesCug(@Nullable Tree tree)
focal_class.full_signature: private boolean includesCug(@Nullable Tree tree)
focal_class.identifier: includesCug
focal_class.modifiers: private
focal_class.parameters: (@Nullable Tree tree)
focal_class.return: boolean
focal_class.signature: boolean includesCug(@Nullable Tree tree)
focal_class.class_method_signature: CugPermissionProvider.includes(@NotNull String path)
focal_class.full_signature: private boolean includes(@NotNull String path)
focal_class.identifier: includes
focal_class.modifiers: private
focal_class.parameters: (@NotNull String path)
focal_class.return: boolean
focal_class.signature: boolean includes(@NotNull String path)
focal_class.class_method_signature: CugPermissionProvider.mayContain(@NotNull String path)
focal_class.full_signature: private boolean mayContain(@NotNull String path)
focal_class.identifier: mayContain
focal_class.modifiers: private
focal_class.parameters: (@NotNull String path)
focal_class.return: boolean
focal_class.signature: boolean mayContain(@NotNull String path)
focal_class.class_method_signature: CugPermissionProvider.getCugRoot(@NotNull Tree immutableTree, @NotNull TreeType type)
focal_class.full_signature: @Nullable private Tree getCugRoot(@NotNull Tree immutableTree, @NotNull TreeType type)
focal_class.identifier: getCugRoot
focal_class.modifiers: @Nullable private
focal_class.parameters: (@NotNull Tree immutableTree, @NotNull TreeType type)
focal_class.return: Tree
focal_class.signature: Tree getCugRoot(@NotNull Tree immutableTree, @NotNull TreeType type)
focal_class.class_method_signature: CugPermissionProvider.canRead(@NotNull Tree tree)
focal_class.full_signature: private boolean canRead(@NotNull Tree tree)
focal_class.identifier: canRead
focal_class.modifiers: private
focal_class.parameters: (@NotNull Tree tree)
focal_class.return: boolean
focal_class.signature: boolean canRead(@NotNull Tree tree)
focal_class.class_method_signature: CugPermissionProvider.getImmutableTree(@NotNull Tree tree)
focal_class.full_signature: @NotNull private Tree getImmutableTree(@NotNull Tree tree)
focal_class.identifier: getImmutableTree
focal_class.modifiers: @NotNull private
focal_class.parameters: (@NotNull Tree tree)
focal_class.return: Tree
focal_class.signature: Tree getImmutableTree(@NotNull Tree tree)
focal_class.class_method_signature: CugPermissionProvider.getTreeFromLocation(@NotNull TreeLocation location)
focal_class.full_signature: @Nullable private static Tree getTreeFromLocation(@NotNull TreeLocation location)
focal_class.identifier: getTreeFromLocation
focal_class.modifiers: @Nullable private static
focal_class.parameters: (@NotNull TreeLocation location)
focal_class.return: Tree
focal_class.signature: Tree getTreeFromLocation(@NotNull TreeLocation location)
focal_class.class_method_signature: CugPermissionProvider.createVersionPermission(@NotNull Tree tree, @NotNull TreeType type, @NotNull TreePermission parent, boolean parentIsCugPermission)
focal_class.full_signature: @NotNull private TreePermission createVersionPermission(@NotNull Tree tree, @NotNull TreeType type, @NotNull TreePermission parent, boolean parentIsCugPermission)
focal_class.identifier: createVersionPermission
focal_class.modifiers: @NotNull private
focal_class.parameters: (@NotNull Tree tree, @NotNull TreeType type, @NotNull TreePermission parent, boolean parentIsCugPermission)
focal_class.return: TreePermission
focal_class.signature: TreePermission createVersionPermission(@NotNull Tree tree, @NotNull TreeType type, @NotNull TreePermission parent, boolean parentIsCugPermission)
focal_class.class_method_signature: CugPermissionProvider.getVersionManager()
focal_class.full_signature: @NotNull private ReadOnlyVersionManager getVersionManager()
focal_class.identifier: getVersionManager
focal_class.modifiers: @NotNull private
focal_class.parameters: ()
focal_class.return: ReadOnlyVersionManager
focal_class.signature: ReadOnlyVersionManager getVersionManager()
focal_method.body: @NotNull
      @Override
      public PrivilegeBits supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits) {
          if (tree == null) {
              return PrivilegeBits.EMPTY;
          }
  
          PrivilegeBits pb;
          if (privilegeBits == null) {
              pb = PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ);
          } else {
              pb = PrivilegeBits.getInstance(privilegeBits);
              pb.retain(PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ));
          }
  
          if (pb.isEmpty() || !includesCug(tree)) {
              return PrivilegeBits.EMPTY;
          } else {
              return pb;
          }
      }
focal_method.class_method_signature: CugPermissionProvider.supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits)
focal_method.full_signature: @NotNull @Override public PrivilegeBits supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits)
focal_method.identifier: supportedPrivileges
focal_method.invocations: get getInstance retain get isEmpty includesCug
focal_method.modifiers: @NotNull @Override public
focal_method.parameters: (@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits)
focal_method.return: PrivilegeBits
focal_method.signature: PrivilegeBits supportedPrivileges(@Nullable Tree tree, @Nullable PrivilegeBits privilegeBits)