def resolve_method(req)
      method = req["method"]
      iface_name, func_name = Barrister::parse_method(method)
      if iface_name == nil
        return err_resp(req, -32601, "Method not found: #{method}")
      end
      
      iface = interface(iface_name)
      if !iface
        return err_resp(req, -32601, "Interface not found on IDL: #{iface_name}")
      end

      func = iface.function(func_name)
      if !func
        return err_resp(req, -32601, "Function #{func_name} does not exist on interface #{iface_name}")
      end
      
      return nil, iface, func
    end
def resolve_method(req)
      method = req["method"]
      iface_name, func_name = Barrister::parse_method(method)
      if iface_name == nil
        return err_resp(req, -32601, "Method not found: #{method}")
      end
      
      iface = interface(iface_name)
      if !iface
        return err_resp(req, -32601, "Interface not found on IDL: #{iface_name}")
      end

      func = iface.function(func_name)
      if !func
        return err_resp(req, -32601, "Function #{func_name} does not exist on interface #{iface_name}")
      end
      
      return nil, iface, func
    end
Takes a JSON-RPC request hash, and returns a 3 element tuple. This is called as
 part of the request validation sequence.

 `0` - JSON-RPC response hash representing an error. nil if valid.
 `1` - Interface instance on this Contract that matches `req["method"]`
 `2` - Function instance on the Interface that matches `req["method"]`