public void decreaseKey(Fnode node, int newVal) {
    if (node == min) {
      node.data = newVal;
      return;
    }

    /*
     * if((int)node.data==(int)min.data){ node.data = newVal; return; }
     */
    if (node.parent == null) {
      if (newVal < (int) node.data) {
        node.data = newVal;
        if ((int) min.data > (int) node.data) {
          min = node;
        }
      }
    }
    /*else if(newVal < (int)node.data && newVal>=(int)node.parent.data){
    	node.data = newVal;

    }else */
    if (newVal < (int) node.data) {
      if (node.right == node) {
        node.data = newVal;
        if (node.parent.child == node) {
          node.parent.child = null;
        }
        recurringOps(node);
        /*
         * node.parent = null; insert(node);
         */
      } else {

        if (node.parent.child == node) {
          node.data = newVal;
          node.parent.child = node.right;
          removeReference(node);
          recurringOps(node);
        } else {
          node.data = newVal;
          removeReference(node);
          recurringOps(node);
        }
      }
    }
  }