private def emptyCogroup[K, V]()

in scalding-base/src/main/scala/com/twitter/scalding/typed/OptimizationRules.scala [991:1010]


    private def emptyCogroup[K, V](cg: CoGrouped[K, V]): Boolean = {
      import CoGrouped._

      def empty(t: TypedPipe[Any]): Boolean = t match {
        case EmptyTypedPipe => true
        case _              => false
      }
      cg match {
        case Pair(left, _, jf) if left.inputs.forall(empty) && (Joiner.isLeftJoinLike(jf) == Some(true)) =>
          true
        case Pair(_, right, jf) if right.inputs.forall(empty) && (Joiner.isRightJoinLike(jf) == Some(true)) =>
          true
        case Pair(left, right, _) if left.inputs.forall(empty) && right.inputs.forall(empty) => true
        case Pair(_, _, _)                                                                   => false
        case WithDescription(cg, _) => emptyCogroup(cg)
        case WithReducers(cg, _)    => emptyCogroup(cg)
        case MapGroup(cg, _)        => emptyCogroup(cg)
        case FilterKeys(cg, _)      => emptyCogroup(cg)
      }
    }