def specs(s = nil, options = {})
      options = {
        type:          nil,
        sub_type:      nil,
        mode:          current_mode.nil? ? nil : current_mode.name,
        spec:          nil,
        symbol:        false,
        creating_spec: false
      }.update(options || {})
      _specs
      if s.nil?
        return show_specs(options)
      elsif s.is_a? Hash
        # no spec was passed but some option was passed
        options.update(s)
        return show_specs(options)
      else
        # a spec was passed
        options[:spec] = s
        return show_specs(options)
      end
    end
def specs(s = nil, options = {})
      options = {
        type:          nil,
        sub_type:      nil,
        mode:          current_mode.nil? ? nil : current_mode.name,
        spec:          nil,
        symbol:        false,
        creating_spec: false
      }.update(options || {})
      _specs
      if s.nil?
        return show_specs(options)
      elsif s.is_a? Hash
        # no spec was passed but some option was passed
        options.update(s)
        return show_specs(options)
      else
        # a spec was passed
        options[:spec] = s
        return show_specs(options)
      end
    end
Returns a hash of hash containing all specs/modes
 If no spec is specified then all specs are returned via inspect
 If a spec is specified, a spec object will be returned if found
 in the current mode.  If a mode option is passed and no spec
 is passed it will filter the specs inspect display by the mode
 and visa-versa