code: public T AddEx(T value) {
          if (m_Count < m_Capacity) {
              m_Array[++m_Count] = value;
              UpHeap();
              return null;
          }
          else if (m_Capacity == 0) return value;
          else if (greaterThan(m_Array[1], value)) {
              T retVal = m_Array[1];
              m_Array[1] = value;
              DownHeap();
              return retVal;
          }
          else return value;
      }
docs: / If no object was thrown (heap was not yes populated) return null