code: public GoogRequire merge(GoogRequire other) {
      checkArgument(other.symbol().equals(symbol()));
      if (other.equals(this)) {
        return this;
      }
      // if symbols are equal and the references are, then they must differ only by requireType or not
      // prefer the non requireType symbol
      if ((other.chunk() instanceof VariableDeclaration
              && chunk() instanceof VariableDeclaration
              && ((VariableDeclaration) chunk())
                  .varName()
                  .equals(((VariableDeclaration) other.chunk()).varName()))
          || (!(chunk() instanceof VariableReference)
              && !(other.chunk() instanceof VariableDeclaration))) {
        if (other.isTypeRequire()) {
          return this;
        }
        return other;
      }
      throw new IllegalArgumentException(
          "Found the same namespace added as a require in multiple incompatible ways: "
              + other
              + " vs. "
              + this);
    }
docs: For 2 goog requires with the same symbol. Return the perfered one.