[10]   [1mf[*][0m
     @ THIS_FILE:29
[0]    [1mf[Equals[0]][0m
     @ THIS_FILE:1
[0]    [1mf[Equals[1]][0m
     @ THIS_FILE:5
[0]    [1mf[StartsWith['hell']][0m
     @ THIS_FILE:9
[0]    [1mf[StartsWith['hello']][0m
     @ THIS_FILE:13
[0]    [1mf[int][0m
     @ THIS_FILE:17
[0]    [1mf[str][0m
     @ THIS_FILE:21
[0]    [1mf[*][0m
     @ THIS_FILE:25
[0]    [1mf[*, k: str][0m
     @ THIS_FILE:33
================================================================================
Resolve f(13)
================================================================================
[1;32m#1 [10:0]   f[*]
          @ THIS_FILE:29[0m
[1;90m!= [0:2]    f[Equals[0]]
          @ THIS_FILE:1[0m
[1;90m!= [0:2]    f[Equals[1]]
          @ THIS_FILE:5[0m
[0m#2 [0:1]    f[int]
          @ THIS_FILE:17[0m
[0m#3 [0:0]    f[*]
          @ THIS_FILE:25[0m
Resolution: f[*] will be called first.
================================================================================
Resolve f(0)
================================================================================
[1;32m#1 [10:0]   f[*]
          @ THIS_FILE:29[0m
[0m#2 [0:2]    f[Equals[0]]
          @ THIS_FILE:1[0m
[1;90m!= [0:2]    f[Equals[1]]
          @ THIS_FILE:5[0m
[0m#3 [0:1]    f[int]
          @ THIS_FILE:17[0m
[0m#4 [0:0]    f[*]
          @ THIS_FILE:25[0m
Resolution: f[*] will be called first.
================================================================================
Resolve f(1)
================================================================================
[1;32m#1 [10:0]   f[*]
          @ THIS_FILE:29[0m
[1;90m!= [0:2]    f[Equals[0]]
          @ THIS_FILE:1[0m
[0m#2 [0:2]    f[Equals[1]]
          @ THIS_FILE:5[0m
[0m#3 [0:1]    f[int]
          @ THIS_FILE:17[0m
[0m#4 [0:0]    f[*]
          @ THIS_FILE:25[0m
Resolution: f[*] will be called first.
================================================================================
Resolve f('hello')
================================================================================
[1;32m#1 [10:0]   f[*]
          @ THIS_FILE:29[0m
[1;31m== [0:2]    f[StartsWith['hell']]
          @ THIS_FILE:9[0m
[1;31m== [0:2]    f[StartsWith['hello']]
          @ THIS_FILE:13[0m
[1;90m-- [0:1]    f[str]
          @ THIS_FILE:21[0m
[1;90m-- [0:0]    f[*]
          @ THIS_FILE:25[0m
Resolution: f[*] will be called first. There is ambiguity between multiple matching methods, marked '=='.
================================================================================
[1;32m#1 [0:0.0]  f[*, k: str]
          @ THIS_FILE:33[0m
Resolution: f[*, k: str] will be called first.
