code: private Symbol choose(Symbol boundSym, Symbol unboundSym) {
              if (lookupSuccess(boundSym) && lookupSuccess(unboundSym)) {
                  return ambiguityError(boundSym, unboundSym);
              } else if (lookupSuccess(boundSym) ||
                      (canIgnore(unboundSym) && !canIgnore(boundSym))) {
                  return boundSym;
              } else if (lookupSuccess(unboundSym) ||
                      (canIgnore(boundSym) && !canIgnore(unboundSym))) {
                  return unboundSym;
              } else {
                  return boundSym;
              }
          }
docs: where