             }
         }
         
-        // Option default names
+        // Check option default names (using filed name) and name missing error
         try optionFields.forEach { (name, option) in
             checkFieldName(name, ofOption: option, withKnown: &knownOptionNames)
             if option.longName == nil && option.shortName == nil {

            }
        }
        
        // Parameters default names
        try parameterFields.forEach { (name, parameter) in
            checkFieldName(name, ofParameter: parameter, withKnown: &knownParameterNames)
            if parameter.name == nil {

    
    public mutating func parse(_ args: ArraySlice<String>) throws {
        let fields = Mirror(reflecting: self).children.filter { $0.value is Parsable }
        let (options, parameters) = try parseFields(fields)
        
        var parameterValues = [String]()
        try parseOptions(options, withArgs: args, parameterValues: &parameterValues)
        try parseParameters(parameters, withValues: parameterValues)
    }
    
    /// Parse fileds and return `Parser`s
    private func parseFields(_ fields: [Mirror.Child]) throws -> ([Option], [Parameter]) {
        var knownOptionNames = Set<String>()
        var knownParameterNames = Set<String>()
        
