# Path: google/cloud/asset_v1p4beta1/types/assets.py
# class IamPolicyAnalysisResult(proto.Message):
#     class AnalysisState(proto.Message):
#     class Resource(proto.Message):
#     class Access(proto.Message):
#     class Edge(proto.Message):
#     class Identity(proto.Message):
#     class AccessControlList(proto.Message):
#     class IdentityList(proto.Message):


import proto  # type: ignore
from google.cloud.asset_v1p4beta1.types import assets
from google.protobuf import duration_pb2  # type: ignore
        r"""An analysis message to group the query and results.

        Attributes:
            analysis_query (google.cloud.asset_v1p4beta1.types.IamPolicyAnalysisQuery):
                The analysis query.
            analysis_results (Sequence[google.cloud.asset_v1p4beta1.types.IamPolicyAnalysisResult]):
                A list of
                [IamPolicyAnalysisResult][google.cloud.asset.v1p4beta1.IamPolicyAnalysisResult]
                that matches the analysis query, or empty if no result is
                found.
            fully_explored (bool):
                Represents whether all entries in the
                [analysis_results][google.cloud.asset.v1p4beta1.AnalyzeIamPolicyResponse.IamPolicyAnalysis.analysis_results]
                have been fully explored to answer the query.
        """

        analysis_query = proto.Field(
            proto.MESSAGE, number=1, message="IamPolicyAnalysisQuery",
        )
        analysis_results = proto.RepeatedField(
            proto.MESSAGE, number=2, message=assets.IamPolicyAnalysisResult,
        )
        fully_explored = proto.Field(proto.BOOL, number=3,)

    main_analysis = proto.Field(proto.MESSAGE, number=1, message=IamPolicyAnalysis,)
    service_account_impersonation_analysis = proto.RepeatedField(
        proto.MESSAGE, number=2, message=IamPolicyAnalysis,
    )
    fully_explored = proto.Field(proto.BOOL, number=3,)
    non_critical_errors = proto.RepeatedField(

# Path: google/cloud/asset_v1p4beta1/types/assets.py
# class IamPolicyAnalysisResult(proto.Message):
#     class AnalysisState(proto.Message):
#     class Resource(proto.Message):
#     class Access(proto.Message):
#     class Edge(proto.Message):
#     class Identity(proto.Message):
#     class AccessControlList(proto.Message):
#     class IdentityList(proto.Message):


# Path: google/cloud/asset_v1p4beta1/types/asset_service.py
import proto  # type: ignore
from google.cloud.asset_v1p4beta1.types import assets
from google.protobuf import duration_pb2  # type: ignore

        r"""An analysis message to group the query and results.

        Attributes:
            analysis_query (google.cloud.asset_v1p4beta1.types.IamPolicyAnalysisQuery):
                The analysis query.
            analysis_results (Sequence[google.cloud.asset_v1p4beta1.types.IamPolicyAnalysisResult]):
                A list of
                [IamPolicyAnalysisResult][google.cloud.asset.v1p4beta1.IamPolicyAnalysisResult]
                that matches the analysis query, or empty if no result is
                found.
            fully_explored (bool):
                Represents whether all entries in the
                [analysis_results][google.cloud.asset.v1p4beta1.AnalyzeIamPolicyResponse.IamPolicyAnalysis.analysis_results]
                have been fully explored to answer the query.
        """

        analysis_query = proto.Field(
            proto.MESSAGE, number=1, message="IamPolicyAnalysisQuery",
        )
        analysis_results = proto.RepeatedField(
            proto.MESSAGE, number=2, message=assets.IamPolicyAnalysisResult,
        )
        fully_explored = proto.Field(proto.BOOL, number=3,)

    main_analysis = proto.Field(proto.MESSAGE, number=1, message=IamPolicyAnalysis,)
    service_account_impersonation_analysis = proto.RepeatedField(
        proto.MESSAGE, number=2, message=IamPolicyAnalysis,
    )
    fully_explored = proto.Field(proto.BOOL, number=3,)
    non_critical_errors = proto.RepeatedField(

        proto.MESSAGE, number=4, message=assets.IamPolicyAnalysisResult.AnalysisState,