     
     public func nodeParser(node: XMLElement, key: String, options: [String:Any] = [:]) -> SpectraXMLNodeParser? {
         
-        // Achievement Unlocked: API allows for recursive resolution of variadically structured categories into a final object of any type ... ok well maybe it doesn't quite do this yet
-        
         switch self {
         case .World:
             return {(container, node, key, options) in

import Swinject
import ModelIO

public typealias SpectraXMLNodeTuple = (construct: Any, meta: [String: Any]?)
// meta is used when the construct returns a monad
// meta should include a function at key: resolve
// - the function should be expected to receive itself as args

            // TODO: resolve custom types
            //            parser.resolve(AnyClass.self, name: self.rawValue)
            
            let (nodeResult, klass, meta) = nodeParser(container: container, node: child, key: key, options: options)
//            let klass: AnyClass = meta["klass"]!
            let finalResult = nodeResult as klass
            
            
            // TODO: use options to set ObjectScope (default to .Container?)
            
