docs: private Stream<Type> scopeTypes(GraqlCompute query) {
          // Get all types if query.inTypes() is empty, else get all scoped types of each meta type.
          // Only include attributes and implicit "has-xxx" relations when user specifically asked for them.
          if (query.in().isEmpty()) {
              ImmutableSet.Builder<Type> typeBuilder = ImmutableSet.builder();
  
              if (scopeIncludesAttributes(query)) {
                  tx.getMetaConcept().subs().forEach(typeBuilder::add);
              } else {
                  tx.getMetaEntityType().subs().forEach(typeBuilder::add);
                  tx.getMetaRelationType().subs()
                          .filter(relationType -> !relationType.isImplicit()).forEach(typeBuilder::add);
              }
  
              return typeBuilder.build().stream();
          } else {
              Stream<Type> subTypes = query.in().stream().map(t -> {
                  Label label = Label.of(t);
                  Type type = tx.getType(label);
                  if (type == null) throw GraqlQueryException.labelNotFound(label);
                  return type;
              }).flatMap(Type::subs);
  
              if (!scopeIncludesAttributes(query)) {
                  subTypes = subTypes.filter(relationType -> !relationType.isImplicit());
              }
  
              return subTypes;
          }
      }