     
     public func copy() -> NodeType {
         let cp = NodeType()
+        cp.id = self.id
         cp.attributes = self.attributes.map { $0.copy() }
         cp.layouts = self.layouts.map { $0.copy() }
         return cp


    public func copy() -> NodeType {
        let cp = NodeType()
        cp.stencilCompareFunction = self.stencilCompareFunction
        cp.stencilFailureOperation = self.stencilFailureOperation
        cp.depthFailureOperation = self.depthFailureOperation

    public func generate(inj: SpectraInjected, injector: MetalNodeInjector?) -> MTLType {
        let desc = MTLType()

        // NOTE: to create color attachments, use setObject atIndexedSubscript
        return desc
    }

    public func copy() -> NodeType {
        let cp = NodeType()
        cp.id = self.id
        cp.colorAttachments = self.colorAttachments.map { $0.copy() }
        cp.depthAttachment = self.depthAttachment?.copy()
        cp.stencilAttachment = self.stencilAttachment?.copy()
