You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: _node.rs
    path of file: ./repos/aws-sdk-rust/sdk/panorama/src/types
    
    the code of the file until where you have to start completion: // Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>An application node that represents a camera stream, a model, code, or output.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct Node {
    /// <p>The node's ID.</p>
    pub node_id: ::std::string::String,
    /// <p>The node's name.</p>
    pub name: ::std::string::String,
    /// <p>The node's category.</p>
    pub category: crate::types::NodeCategory,
    /// <p>The account ID of the node's owner.</p>
    pub owner_account: ::std::option::Option<::std::string::String>,
    /// <p>The node's package name.</p>
    pub package_name: ::std::string::String,
    /// <p>The node's package ID.</p>
    pub package_id: ::std::string::String,
    /// <p>The node's ARN.</p>
    pub package_arn: ::std::option::Option<::std::string::String>,
    /// <p>The node's package version.</p>
    pub package_version: ::std::string::String,
    /// <p>The node's patch version.</p>
    pub patch_version: ::std::string::String,
    /// <p>The node's description.</p>
    pub description: ::std::option::Option<::std::string::String>,
    /// <p>When the node was created.</p>
    pub created_time: ::aws_smithy_types::DateTime,
}
impl Node {
    /// <p>The node's ID.</p>
    pub fn node_id(&self) -> &str {
        use std::ops::Deref;
        self.node_id.deref()
    }
    /// <p>The node's name.</p>
    pub fn name(&self) -> &str {
        use std::ops::Deref;
        self.name.deref()
    }
    /// <p>The node's category.</p>
    pub fn category(&self) -> &crate::types::NodeCategory {
        &self.category
    }
    /// <p>The account ID of the node's owner.</p>
    pub fn owner_account(&self) -> ::std::option::Option<&str> {
        self.owner_account.as_deref()
    }
    /// <p>The node's package name.</p>
    pub fn package_name(&self) -> &str {
        use std::ops::Deref;
        self.package_name.deref()
    }
    /// <p>The node's package ID.</p>
    pub fn package_id(&self) -> &str {
        use std::ops::Deref;
        self.package_id.deref()
    }
    /// <p>The node's ARN.</p>
    pub fn package_arn(&self) -> ::std::option::Option<&str> {
        self.package_arn.as_deref()
    }
    /// <p>The node's package version.</p>
    pub fn package_version(&self) -> &str
    
    pub fn build(self) -> ::std::result::Result<crate::types::Node, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::Node {
            node_id: self.node_id.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "node_id",
                    "node_id was not specified but it is required when building Node",
                )
            })?,
            name: self.name.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "name",
                    "name was not specified but it is required when building Node",
                )
            })?,
            category: self.category.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "category",
                    "category was not specified but it is required when building Node",
                )
            })?,
            owner_account: self.owner_account,
            package_name: self.package_name.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "package_name",
                    "package_name was not specified but it is required when building Node",
                )
            })?,
            package_id: self.package_id.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "package_id",
                    "package_id was not specified but it is required when building Node",
                )
            })?,
            package_arn: self.package_arn,
            package_version: self.package_version.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "package_version",
                    "package_version was not specified but it is required when building Node",
                )
            })?,
            patch_version: self.patch_version.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "patch_version",
                    "patch_version was not specified but it is required when building Node",
                )
            })?,
            description: self.description,
            created_time: self.created_time.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "created_time",
                    "created_time was not specified but it is required when building Node",
                )
            })?,
        })
    }