docs: function getMethod (signature, method, options) {
      // convert signature string to method and function name
      signature = getValidSignature(signature)
      // get module
      var module = immutable.modules[signature.moduleName]
      // throw error if module not defined
      if (!defined(module)) {
          throw new Error(`method error: module not found ${signature.signature}`)
      }
      // if method not passed then attempt to get existing
      if (!defined(method)) {
          // throw error if method not defined
          if (!defined(module[signature.methodName])) {
              throw new Error(`method error: method not found ${signature.signature}`)
          }
          // return method
          return module[signature.methodName]
      }
      // get validated options, do not set defaults which will come from module
      options = getValidOptions(options)
      // attempt to create new module method
      method = module.method(signature.methodName, method, options)
      // do binds for method
      doBindForMethod(signature.signature)
      // set cache rules for method
      doCacheForMethod(signature.signature)
      // return method
      return method
  }