code: public Type glb(Type t, Type s) {
          if (s == null)
              return t;
          else if (t.isPrimitive() || s.isPrimitive())
              return syms.errType;
          else if (isSubtypeNoCapture(t, s))
              return t;
          else if (isSubtypeNoCapture(s, t))
              return s;
  
          List<Type> closure = union(closure(t), closure(s));
          return glbFlattened(closure, t);
      }
docs: where