/** {@inheritDoc} */
 @Override
 public int hashCode() {
   int hash = "FullyBoundProcedure".hashCode();
   hash <<= 2;
   hash ^= procedure.hashCode();
   hash <<= 2;
   if (null != left) {
     hash ^= left.hashCode();
   }
   hash <<= 2;
   if (null != right) {
     hash ^= right.hashCode();
   }
   return hash;
 }
 /**
  * Learn whether another FullyBoundProcedure is equal to this.
  *
  * @param that FullyBoundProcedure to test
  * @return boolean
  */
 public boolean equals(FullyBoundProcedure that) {
   return null != that
       && procedure.equals(that.procedure)
       && (null == left ? null == that.left : left.equals(that.left))
       && (null == right ? null == that.right : right.equals(that.right));
 }
 /** {@inheritDoc} */
 public void run() {
   procedure.run(left, right);
 }